我有一个形式为 RDD[((Int, Int), Vector[(Long, Long)])]
的 RDD。在这里我需要对 Vector 部分进行操作并删除那里的所有重复映射。
例如在 Vector 部分,如果有两对 (3,2) 和 (3,4) 那么
只有 (3,2) 应该被保留(任何一个)。
一个完整的例子是
((1,1),Vector((3,3), (1,1), (1,2), (2,1), (2,2), (4,4)))
((5,2),Vector((4,3), (4,2), (2,1)))
((5,2),Vector((4,3), (1,2)))
应该变成
((1,1),Vector((3,3), (1,1), ,(2,1), (4,4)))
((5,2),Vector((4,3), (2,1)))
((5,2),Vector((4,3), (1,2)))
我从这样的事情开始,但卡住了。
curRDD.map{ case (left, right) =>
for((ll,li) <- right) yield {
}
}
我如何实现这一目标?
最佳答案
这里是一个使用一系列转换而不是 for-comprehension 的实现。对的顺序可以不同。这会成为问题吗?
curRDD.map{ x => (x._1, x._2.groupBy(_._1).mapValues(_.head).values.toVector ) }
关于scala - 删除 scala 中 int 对向量中的重复映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34171530/