我有一个自定义case对象的RDD,它的形式是
{userId:"h245hv45uh", title: "The-BFG", seen: 1, timestamp: 2016-08-06 13:19:53.051000+0000}有没有办法将所有具有相同userId和标题的行分组,然后使用相同的userId和标题在新的RDD中创建一个行,但添加所有“查看”值?
{userId:"h245hv45uh", title: "The-BFG", seen: 71, timestamp: 2016-08-06 13:19:53.051000+0000}那么,如果有71行具有相同的userId和标题呢?
最初的RDD有几个标题和用户I,我试图聚合分数,过滤以匹配userIds和标题
谢谢
发布于 2016-08-07 18:19:52
您可以尝试将其转换为一对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]https://stackoverflow.com/questions/38816718
复制相似问题