【发布时间】:2017-12-03 00:56:03
【问题描述】:
我找不到答案。 如果我有 RDD
rdd = sc.parallelize([('a', [1,2,3]), ('b',[4,5,6])])
其中每个值都是一个列表。 有没有办法拆分RDD,使得它变成
sc.parallelize([('a',1),('a',2),('a',3),('b',4),('b',5),('b'6)])
现在每个值都是列表的元素之一,并且匹配键。
我大致知道解决方案。我们可以先collect()
a = rdd.collect()
然后重新分配一个RDD为
rdd2 = sc.parallelize([x for x in a])
但如果 RDD 很大,collect() 将非常耗时。我们必须从规模上考虑。有没有分布式的方法来做到这一点? (比如使用lambda function .. 等)谢谢!
【问题讨论】:
标签: apache-spark pyspark rdd