【发布时间】:2019-11-15 04:44:24
【问题描述】:
我有以下 rdds,我想使用 leftOuterJoin 加入它们。我想知道 reduceByKey 是否会比 leftOuterJoin 更有效/更快。
rd0= sc.parallelize([ ('s1', 'o1' ),("s1", 'o2' ),('s2','o2'),("s3",'o3')])
rd1= sc.parallelize([ ('s1', 'oo1' ),("s10", 'oo10' ),('s2','oo2')])
reduceByKeyMethod
rd00 = rd0.map(lambda x:(x[0],([x[1]],[])))
rd11 = rd1.map(lambda x:(x[0],([],[x[1]])))
rd00.union(rd11).reduceByKey(lambda x,y:(x[0]+y[0],x[1]+y[1])).collect()
Out[22]:
[('s1', (['o1'], [])),
('s1', (['o2'], [])),
('s2', (['o2'], [])),
('s3', (['o3'], [])),
('s1', ([], ['oo1'])),
('s10', ([], ['oo10'])),
('s2', ([], ['oo2']))]
vs 直接使用 leftOuterJoin rd0.leftOuterJoin(rd1)
对于大型 rd0 和 rd1 数据集,使用 reduceByKey 会更快吗?
【问题讨论】:
-
很高兴知道,谢谢
标签: apache-spark pyspark