将RDD的相关密钥分组在一起

时间:2016-05-13 12:10:05

标签: apache-spark pyspark

我生成了一组带有一组键值对的RDD。假设密钥是[10,20,25,30,40,50]。真正的密钥靠近大小为X.X米的地理区域,需要聚合到2 * X.2 * X大小。 因此,在这个RDD集中,我需要聚合具有它们之间关系的密钥。示例一个键是当前键的两倍 - 例如10和20.然后将这些键加在一起得到30.这些值也将加在一起类似地,结果集将是[30,25,70,50]。 我假设,因为map和reduce对RDD中元素的当前键的工作,没有办法使用map或groupbyKey或aggregatebyKey;因为我想要的分组需要前一个键的状态

我认为唯一的方法是使用foreach遍历RDD中的元素,并且每个元素也将整个RDD传递给它。

def group_rdds_together(rdd,rdd_list):
    key,val = rdd
    xbin,ybin = key
    rdd_list.foreach(group_similar_keys,xbin,ybin) 

bin_rdd.map(lambda x : group_rdds_together(rdd,bin_rdd))

为此,我必须将rdd传递给map lambda以及foreach函数的自定义参数

我正在做的事情是可怕的错误;只是想说明我要去哪里。应该有一个比这更简单,更好的方法

0 个答案:

没有答案