是RDD [(K,V)] rdd:RDD [(K,V)]中的一个类型?

时间:2014-05-12 08:30:08

标签: scala apache-spark

在/core/src/main/scala/org/apache/spark/SparkContext.scala的spark文件中,有以下内容

implicit def rddToPairRDDFunctions[K, V](rdd: RDD[(K, V)])
      (implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K] = null) = {
    new PairRDDFunctions(rdd)
  }

我认为RDD [(K,V)]是rdd的paraemter的类型。但是,我们如何定义类似RDD [(K,V)]的类型? 以下内容无法编译

abstract class RDD[(K, V)]

但以下可能。

abstract class RDD[K, V]

那是什么RDD [(K,V)]

2 个答案:

答案 0 :(得分:10)

[(K, V)]是K和V的元组,组合为单个参数

enter image description here

[K, V]是两个不同的类型参数

enter image description here

RDD只接受一个类型参数

答案 1 :(得分:4)

(K, V)表示Tuple2[K, V],因此rdd: RDD[(K, V)]表示rdd: RDD[Tuple2[K, V]]。类型RDD应该有一个类型参数。

class RDD[T]
new RDD[(Int, String)] // new RDD[Tuple2[Int, String]]