Spark:将RDD(Key,List)扩展为RDD(Key,Value)

5

我有一个类似这样的RDD:

RDD[(Int, List)]]

如果 RDD 中的单个元素如下所示:

(1, List(1, 2, 3))

我的问题是如何将键值对扩展为以下形式:
(1,1)
(1,2)
(1,3)

谢谢你

2个回答

7

rdd.flatMap { case (key, values) => values.map((key, _)) }

的意思是将RDD中的每个键值对进行扁平化处理,将值列表转换为一个新的键值对列表,其中每个键都与原始键相同,而值则分别与原始值匹配。

4
在 Python 中(基于 @seanowen 的回答):
rdd.flatMap(lambda x: map(lambda e: (x[0], e), x[1]))

感谢您进行Python端口 :) 您是指rdd.flatMap(lambda x: map(lambda e: (x[0], e), x[1])) - 请确认一下好吗? - mork
不幸的是,我已经不参与这个项目了,所以无法检查。但如果答案不正确,并且您可以验证反向顺序是正确的,请随时进行编辑。 - etov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接