gpt4 book ai didi

scala - 在 Apache Spark 中,如何按两个共享值对 RDD 的所有行进行分组?

转载 作者:行者123 更新时间:2023-12-04 06:31:38 25 4
gpt4 key购买 nike

我有一个自定义案例对象的 RDD,它的形式是

{userId:"h245hv45uh", title: "The-BFG", seen: 1, timestamp: 2016-08-06 13:19:53.051000+0000}

有什么方法可以将具有相同用户 ID 和标题的所有行分组,然后在新的 RDD 中创建具有相同用户 ID 和标题但添加了所有“已见”值的单行?

{userId:"h245hv45uh", title: "The-BFG", seen: 71, timestamp: 2016-08-06 13:19:53.051000+0000}

像那样^ 如果有 71 行具有相同的用户 ID 和标题?

原始 RDD 有多个标题和用户 ID,我正在尝试汇总分数,过滤匹配的用户 ID 和标题

谢谢

最佳答案

您可以尝试将其转换为 Pair RDD,然后使用 reduceByKey:

def combFunc(cc1: CaseClass, cc2: CaseClass): CaseClass = {
cc1.copy(seen = cc1.seen + cc2.seen)
}

val newRDD = rdd
.map( i => ((i.userId, i.title), i) ) // converting into a PairRDD
.reduceByKey(combFunc) // reducing by key
.values // converting back to an RDD[CaseClass]

关于scala - 在 Apache Spark 中,如何按两个共享值对 RDD 的所有行进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com