我一直在使用已经简化为以下结构的数据集:
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
任何建议都非常感谢