flatMap 函数内部 lambda 函数的解释: rdd.flatMap(lambda x: map(lambda



我的问题与此链接中的问题完全相同:Spark:RDD(Key,List(到RDD(Key,Value(的扩展,答案确实是正确的。

问题是要转一个RDD,例如:

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

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

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

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,2(和(1,3(的列表,然后使用flatMap将每个项目转换为自己的RDD元素。

对于这个特定的问题,使用flatMapValues更简单:

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

最新更新