Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在rdd上应用distinct对键-值对进行排序,而不仅仅是基于键_Scala_Apache Spark - Fatal编程技术网

Scala 在rdd上应用distinct对键-值对进行排序,而不仅仅是基于键

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),就像它一样 如果要查看此方法

我有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),就像它一样


如果要查看此方法的内部。签名见下文:

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()