Scala 在rdd上应用distinct对键-值对进行排序,而不仅仅是基于键
我有2对RDD,我正在对其进行联合,以提供第三个RDD。 但结果RDD具有重复的元组:Scala 在rdd上应用distinct对键-值对进行排序,而不仅仅是基于键,scala,apache-spark,Scala,Apache Spark,我有2对RDD,我正在对其进行联合,以提供第三个RDD。 但结果RDD具有重复的元组: rdd3 = {(1,2) , (3,4) , (1,2)} 我想从rdd3中删除重复的元组,但前提是元组的键值对相同。 我该怎么做?请直接调用spark scala lib api: def distinct(): RDD[T] 请记住,它是一个带有类型参数的泛型方法 如果使用rdd[(Int,Int)]类型的rdd调用它,它将在rdd中提供不同的类型对(Int,Int),就像它一样 如果要查看此方法
rdd3 = {(1,2) , (3,4) , (1,2)}
我想从rdd3
中删除重复的元组,但前提是元组的键值对相同。
我该怎么做?请直接调用spark scala lib api:
def distinct(): RDD[T]
请记住,它是一个带有类型参数的泛型方法
如果使用rdd[(Int,Int)]类型的rdd调用它,它将在rdd中提供不同的类型对(Int,Int),就像它一样
如果要查看此方法的内部。签名见下文:
def distinct(numPartitions: Int)(implicit ord: Ordering[T] = null): RDD[T] = withScope {
map(x => (x, null)).reduceByKey((x, y) => x, numPartitions).map(_._1)
}
例如,您可以使用distinct
val data= sc.parallelize(
Seq(
("Foo","41","US","3"),
("Foo","39","UK","1"),
("Bar","57","CA","2"),
("Bar","72","CA","2"),
("Baz","22","US","6"),
("Baz","36","US","6"),
("Baz","36","US","6")
)
)
删除重复项:
val distinctData = data.distinct()
distinctData.collect
rdd3.distinct()
。