我正在尝试以下示例
val lista = List(("a", 3), ("a", 1), ("b", 7), ("a", 5))
val rdd = sc.parallelize(lista)
然后在shell中我得到以下
rdd: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[40] at parallelize at <console>:30
但是由于某种原因,我仍然没有弄清楚我能够执行这句话
val resAgg = rdd.aggregateByKey(new HashSet[Int])(_+_, _++_)
在外壳中获取它
resAgg: org.apache.spark.rdd.RDD[(String, scala.collection.mutable.HashSet[Int])] = ShuffledRDD[41] at aggregateByKey at <console>:32
所以我有一些问题:
1.- 名为 rdd 的 var 的真正 RDD 类型是什么?因为在 shell 中它显示的类型是 org.apache.spark.rdd.RDD[(String, Int)] 但查看 API 时,RDD 类没有方法 aggregateByKey。顺便说一句,JavaPairRDD 类是否有 aggregateByKey 方法
2.- 我如何验证/知道 RDD 的真实类型
3.- ParallelCollectionRDD 出现了什么?我在 github 上查找它,发现它是一个私有类,所以我猜想是 scala API 上没有出现 is 的原因,但它是做什么用的?
我使用的是 Spark 1.6.2