首页 > 解决方案 > 如何在多个 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 中是否有这样的替代方案。

标签: apache-sparkrdd

解决方案


与下面的相反,这里实际上不需要 .keyBy ,我们注意到 cogroup - 没有很好地描述可以扩展到 n 个 RDD。

val rddREScogX = rdd1.cogroup(rdd2,rdd3,rddn, ...)

分数应该去第一个答案。


推荐阅读