[英]Explanation of lambda function inside flatMap function: rdd.flatMap(lambda x: map(lambda e: (x[0], e), x[1]))?
我遇到了与此链接中发现的问题完全相同的问题: Spark: Expansion of RDD(Key, List) to 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)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.