Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark aggregateByKey:使用钥匙_Apache Spark - Fatal编程技术网

Apache spark Spark aggregateByKey:使用钥匙

Apache spark Spark aggregateByKey:使用钥匙,apache-spark,Apache Spark,我想从我的RDD创建一组bloom过滤器。我这样做的方式如下所示: rdd.aggregateByKey(create(size))(add, combine).collect() 其中,rdd类似于rdd[(Int,Long)] 问题是这些值在每个组中分布不均匀。也就是说,“一个sizefits all”在这里不起作用,我想根据每个键的元素数量,对bloom过滤器进行不同的初始化 所以我想要像这样的东西 rdd.aggregateByKey(key => create(count(ke

我想从我的RDD创建一组bloom过滤器。我这样做的方式如下所示:

rdd.aggregateByKey(create(size))(add, combine).collect()
其中,
rdd
类似于
rdd[(Int,Long)]

问题是这些值在每个组中分布不均匀。也就是说,“一个
size
fits all”在这里不起作用,我想根据每个键的元素数量,对bloom过滤器进行不同的初始化

所以我想要像这样的东西

rdd.aggregateByKey(key => create(count(key))(add, combine).collect()
其中
count
是带有计数的映射


这是我可以用groupByKey做的,但我想知道,还有其他方法吗?

有一个简单的技巧可以使用。将
RDD
(键,值)
转换为
(键,(键,值))

并应用组合键:

def createCombiner(v: (Int, Long)) = create(count(_._1))  // And insert _._2

kkvRdd.combineByKey(createCombiner, add,  combine)
其中,
add
combine
被调整为接受新类型

def createCombiner(v: (Int, Long)) = create(count(_._1))  // And insert _._2

kkvRdd.combineByKey(createCombiner, add,  combine)