scala - 删除 scala 中 int 对向量中的重复映射

标签 scala apache-spark

我有一个形式为 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/

相关文章:

scala - 为什么将scala编译器参数传递给我的程序?

scala - 为什么 traits 不能有带 Context Bounds 的参数

scala - 使用 Akka 通过 WebSocket 流式传输分页 API 响应

java - 将列表拆分为子列表并将它们一一传递到算法中

scala - Spark DataFrame - 使用 SQL 读取管道分隔文件?

scala - 映射到相同类型的 Traversable 的 Traversable 类型

scala - 计算spark scala中文本文件中数字的平均值

scala - 拆分单行的多个字段或列并使用 Scala 创建多行

apache-spark - 为什么 RDD 不适合流式任务?

apache-spark - Pyspark - 如何将 Parquet 文件转换为带有分隔符的文本文件