将RDD Pairs统计为字典Pyspark

时间:2017-10-15 03:57:45

标签: python apache-spark pyspark rdd

我一直在使用已经简化为以下结构的数据集:

10,47,110,296,318,356,364,377,454,527,539,590,593,597,648,858,1097,1197,1206,1214,1221,1265,1291,1721,1961,2571,2628,2706,2716,3147,3578,3717,3793,4306,4993,5952,6539,7153,7438

RDD的每一行都具有上述结构。

我试图计算行中的每一对并将值插入字典。此字典的示例输出将是: (10,47): 1, (10, 110):1, (10,296):1等。

我能够得到一个基本的实现工作但是在较大的数据集上花费了十分钟而在pyspark中使用了更简单的非字典方法(我正在练习对和条带mapreduce算法)

以前,我正在调用我自己的reduce函数,它会遍历所有组合对,然后为其发出计数。有没有更好的方法来做到这一点?

最终目标是计算RDD的每一行并拥有(val1,val2): count

的字典

将上述数据示例作为名为dataRDD的rdd,我一直在执行以下

pairCount = dataRDD.map(combinePairs)

combinePairs定义为

goodDict =  defaultdict(int)
def combinePairs(data):
data = data.split(',')
for v in itertools.combinations(data,2):
    first = v[0]
    second = v[1]

    pair = (first,second)

    goodDict[pair] = goodDict[pair]+1
return goodDict

任何建议都非常感谢

0 个答案:

没有答案
相关问题