小编CRM*_*CRM的帖子

在spark中有效地操作RDD键的子集

我有一个表格的(键,值)对的RDD

RDD[(
  scala.collection.immutable.Vector[(Byte, Byte)],   
  scala.collection.immutable.Vector[Int]
)]
Run Code Online (Sandbox Code Playgroud)

这里keyVector[(Byte, Byte)]valueVector[Int].

例如,RDD的内容可以如下所示.

(Vector((3,3), (5,5)), Vector(1, 2)),
(Vector((1,1), (2,2), (3,3),(4,4), (5,5)), Vector(1, 3, 4, 2)), 
(Vector((1,1), (2,3)), Vector(1, 4, 2)), 
(Vector((1,1), (2,2), (5,5)), Vector(3, 5)),
Run Code Online (Sandbox Code Playgroud)

我想对这个RDD进行操作,以便在结果RDD中,对于每个(键,值)对,满足以下条件.

当该RDD的键'k1'是该RDD的键'k2'的子集时,k1的值也应该被更新以包含k2的值,而k2的值将保持相同.

以上示例RDD将成为,

(Vector((3,3), (5,5)), Vector(1, 2, 3, 4)), 
(Vector((1,1), (2,2), (3,3), (4,4), (5,5)), Vector(1, 3, 4, 2))
(Vector((1,1), (2,3)), Vector(1, 4, 2))
(Vector((1,1), (2,2), (5,5)), Vector(1, 2, 3, 4, 5))
Run Code Online (Sandbox Code Playgroud)

在这里问过类似的问题.提供的解决方案如下(稍作修改以适应我的问题).这适用于大型数据集但效率很低.

val resultPre = rddIn
  .flatMap { case …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark

10
推荐指数
1
解决办法
514
查看次数

如何在Java中为Swing组件设置字体粗细

我想在JFrame对话框中为组件设置不同的字体权重.我该怎么做呢?

在下面的Java语句中

setFont(new Font("Dialog", Font.BOLD, 12));
Run Code Online (Sandbox Code Playgroud)

当我使用Font.BOLD时它太粗体了,当我使用Font.Plain时它太简单了.我想要介于两者之间.

java fonts swing font-size

9
推荐指数
2
解决办法
2万
查看次数

在具有特定属性的数组中搜索

我有一个2D数组,其中值是单调的.如何找到所有(x,y)其中| f(X,Y) - v1 | <t以最好的方式.

algorithm

9
推荐指数
1
解决办法
275
查看次数

在具有特定属性的高维度的数组中搜索

我有一个3D数组,其中值是单调的.如何找到所有(x,y),| f(X,Y,Z) - v1 | <t.

algorithm

8
推荐指数
1
解决办法
166
查看次数

太多的映射键导致spark中的内存不足异常

我有一个RDD 'inRDD'形式RDD[(Vector[(Int, Byte)], Vector[(Int, Byte)])]这是一个PairRDD(key,value)其中关键是Vector[(Int, Byte)]和值Vector[(Int, Byte)].

对于(Int, Byte)关键字段向量中的每个元素(Int, Byte),以及值字段向量中的每个元素,我希望在输出RDD中得到一个新的(键,值)对(Int, Int), (Byte, Byte).

这应该给我一个表格的RDD RDD[((Int, Int), (Byte, Byte))].

例如,inRDD内容可能是,像,

(Vector((3,2)),Vector((4,2))), (Vector((2,3), (3,3)),Vector((3,1))), (Vector((1,3)),Vector((2,1))), (Vector((1,2)),Vector((2,2), (1,2)))
Run Code Online (Sandbox Code Playgroud)

哪个会变成

((3,4),(2,2)), ((2,3),(3,1)), ((3,3),(3,1)), ((1,2),(3,1)), ((1,2),(2,2)), ((1,1),(2,2))
Run Code Online (Sandbox Code Playgroud)

我有以下代码.

val outRDD = inRDD.flatMap {                                        
    case (left, right) =>
    for ((ll, li) <- left; (rl, ri) <- right) yield {
        (ll,rl) -> (li,ri)
    }
}
Run Code Online (Sandbox Code Playgroud)

它适用于矢量尺寸较小的矢量inRDD.但是当向量中有很多元素时,我得到了out …

scala apache-spark

7
推荐指数
1
解决办法
284
查看次数

数字的最小基数,使其在该基数中表示为回文

给定一个整数x,我必须找到一个最小基数b(b> 1),使得x 基数 b是回文.

例如:5个碱基2是回文序列,即5个碱基2:101是回文结构.除了解决蛮力之外,如何以更好的方式解决它?

c math data-structures

6
推荐指数
1
解决办法
2350
查看次数

在三维网格上有效地找到等成本点,并且点数成本最低

我有一个3d网格,其中网格上的每个点(x,y,z) 成本相关联.任何点(x,y,z)的成本都不是预先知道的.要知道成本,我们需要进行一个非常昂贵的复杂查询.我们对该目标了解的一件事是,在所有3个维度中,成本是单调不减少的.

现在给出成本C,我需要在表面上找到成本为C 的点(x,y,z).这必须通过仅花费最低成本来完成.如何解决我的问题?

当我在线搜索时,我正在获得与轮廓识别相关的技术,但所有这些技术都假设所有点的成本都是预先知道的,比如Marching cubes方法等.在我的情况下,主要指标是成本计算的点数应该是最小的.

如果某人能够建议一种获得近似位置的方法,至少如果不准确的话会很有帮助.

c algorithm math contour data-structures

6
推荐指数
2
解决办法
474
查看次数

在数组中找到重复的数字,除了一个数字之外没有重复的数字

假设有一个元素数组没有重复,除了1个数字,

ex. 1,2,13,4,7,11,2,6
Run Code Online (Sandbox Code Playgroud)

如何以有效的方式找到重复的数字?我们可以在O(n)时间使用哈希表(HT)并使用如下的O(n)空间.

if(HT.Contains(item)) -> this is the duplicate
else
ht.add(item)
Run Code Online (Sandbox Code Playgroud)

在空间和时间复杂性方面有更好的方法吗?

注意: 这个问题不是以下两个不同的问题的重复.

如果整数是连续的,则可以使用此链接中的解决方案如何在一个混乱的连续整数数组中找到一个复制元素

如果n个元素的数组包含从0到n-1的元素,则只有此链接具有解决方案在O(n)时间和O(1)空间中查找重复项

c arrays algorithm data-structures

5
推荐指数
1
解决办法
331
查看次数

高维等值面跟踪

如何有效地在更高维空间上追踪等值面

dimensions dimensional

5
推荐指数
1
解决办法
230
查看次数

与普通方法相比,通过最小散列的Spark Jaccard相似度计算较慢

鉴于2个巨大的值列表,我试图使用Scala 计算它们之间的jaccard相似性.

假设colHashed1包含第一个值列表并colHashed2包含第二个列表.

方法1(琐碎的方法):

val jSimilarity = colHashed1.intersection(colHashed2).distinct.count/(colHashed1.union(colHashed2).distinct.count.toDouble)
Run Code Online (Sandbox Code Playgroud)

方法2(使用minHashing):

我使用过这里解释的方法.

import java.util.zip.CRC32

def getCRC32 (s : String) : Int =
{
    val crc=new CRC32
    crc.update(s.getBytes)
    return crc.getValue.toInt & 0xffffffff
}

val maxShingleID = Math.pow(2,32)-1
def pickRandomCoeffs(kIn : Int) : Array[Int] =
{
  var k = kIn
  val randList = Array.fill(k){0}

  while(k > 0)
  {
    // Get a random shingle ID.

    var randIndex = (Math.random()*maxShingleID).toInt

    // Ensure that each random number …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-mllib

5
推荐指数
1
解决办法
2723
查看次数