apache-spark - 如何在多个 RDD 上使用 groupByKey()?
问题描述
我有多个具有一个公共字段的 RDD CustomerId
。
例如:
debitcardRdd
有数据(CustomerId, debitField1, debitField2, ......)
creditcardRdd
有数据(CustomerId, creditField1, creditField2, ....)
netbankingRdd
有数据(CustomerId, nbankingField1, nbankingField2, ....)
我们对每个单独的 rdd 执行不同的转换,但是我们需要通过 grouping 对来自所有 3 个 rdd 的数据执行转换 CustomerId
。
例子:(CustomerId,debitFiedl1,creditField2,bankingField1,....)
有什么方法可以根据相同的键对来自所有 RDD 的数据进行分组。
注意:在 Apache Beam 中,可以使用 来完成coGroupByKey
,只需检查 spark 中是否有这样的替代方案。
解决方案
与下面的相反,这里实际上不需要 .keyBy ,我们注意到 cogroup - 没有很好地描述可以扩展到 n 个 RDD。
val rddREScogX = rdd1.cogroup(rdd2,rdd3,rddn, ...)
分数应该去第一个答案。
推荐阅读
- c# - 为什么我在部署时无法从 IIS 服务器上的 Web api 获取 pdf 文件输出?
- mysql - mysqldump 最大忽略表使用情况?
- react-native - 如何使用 react-native 在一台移动设备上启用多个用户使用 OTP 登录
- python - VSCode 折叠文档字符串 Python MacOS
- python-3.x - 使用请求库在 python 中扩展短 url
- scala - 多项目设置 - 未检测到主类
- java - 如何创建接受参数并验证页面对象的页面标题的通用黄瓜步骤
- php - 仅当数组的某些元素具有相同值时才增加变量计数 - PHP
- python - NFQueue/Scapy Man in the Middle
- python - 在 Keras 中实现 2D 最大子数组函数作为自定义损失函数