flatMap函数内部的lambda函数的解释:rdd.flatMap(lambda x:map(lambda e:(x [0],e),x [1]))?

时间:2019-12-08 02:40:23

标签: python apache-spark lambda pyspark

我有与在此链接上找到的问题完全相同的问题:Spark: Expansion of RDD(Key, List) to RDD(Key, Value),答案确实是正确的。

问题是要打开一个RDD,例如:

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

进入

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

但是,我真的很想了解lambda函数在做什么,这样我就不会盲目地复制和粘贴。谁能解释一下它是如何工作的?

1 个答案:

答案 0 :(得分:1)

rdd.flatMap(lambda x: map(lambda e: (x[0], e), x[1]))中的功能:

 map(lambda e: (x[0], e), x[1])

与以下列表理解相同:

[ (x[0], e) for e in x[1] ]

,对于示例数据,它生成一个元组列表(1、1、1,,1、2,和(1、3)),然后使用flatMap将每个项目转换为各自的RDD元素。

对于此特定问题,只需使用flatMapValues即可:

rdd.flatMapValues(lambda x:x).collect()
#[(1, 1), (1, 2), (1, 3)]