python - flatMap 函数内部 lambda 函数的解释: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)]
推荐阅读
- tailwind-css - 在反应中自定义tailwindcss主题(使用vite)没有效果
- apache2 - apache2 忽略默认主机并始终重定向到域,即使使用 IP
- javascript - 在 JQuery 回调中找不到对函数的引用
- c++ - 带有 C++ 中的指针和对象的“static_cast”
- r - 如何在 R 中创建一组数字构成的方程?
- three.js - 为什么three.js仅在定义新几何时才更新几何?
- function - 构造函数的函数参数为 null 。#扑
- c++ - 参数类型 (WCHAR*) 与“const char*”类型的参数不兼容
- macos - 如何将 Virtual Box mac OS Big Sur 更改为不同的屏幕分辨率(大小),包括 1366x768?
- python - python需要将“linspace”转换为更“对数”的东西