apache-spark - 在 Pypsark 中如何在 RDD 中获取不同的值
问题描述
在低于 RDD 我想获得不同的值
rdd = sc.parallelize([('id1',['12','12','87']),('id2',['15','17']),
('id3',['20','23','23']),('id4',['20','23','24','26','26','26'])])
下面的数据集
[('id1', ['12', '12', '87']),
('id2', ['15', '17']),
('id3', ['20', '23', '23']),
('id4', ['20', '23', '24', '26', '26', '26'])]
下面的期望结果
[('id1', ['12','87']),
('id2', ['15', '17']),
('id3', ['20', '23']),
('id4', ['20', '23', '24', '26'])]
这是我得到的,但它不起作用,请帮忙。
rdd.flatMap(lambda x: x).keys().distinct()
我怎样才能实现代码来实现这一点?谢谢你。
解决方案
rdd.mapValues(lambda x: set(x)).take(10)
[
('id1', set(['12', '87'])),
('id2', set(['15', '17'])),
('id3', set(['20', '23'])),
('id4', set(['24', '26', '20', '23']))
]
推荐阅读
- python - Python 聊天机器人未运行
- typescript - TS、DDD:值对象和工厂
- python - 在我的脚本中尝试执行 exe 时出错
- node.js - 加密 Node.js:PBEWithHmacSHA512AndAES_128
- tensorflow - 如何训练标签为 [5,30] 的模型?
- reactjs - 响应 terser-webpack-plugin 最新版本问题
- amazon-web-services - 使用 AWS EKS Fargate 创建 sidecar Metricbeat
- android - 如何在不重建 apk 的情况下更新现有已安装应用程序的 Ionic 资产文件夹?
- python - 有没有办法找到直方图的局部最大值范围?
- python - np.pad() 函数吃内存