我在斯派克工作,一路走来接斯卡拉。我有一个关于RDD api以及如何实现各种基本RDD的问题。具体来说,我在火花壳中运行了以下代码:
scala> val gspeech_path="/home/myuser/gettysburg.txt"
gspeech_path: String = /home/myuser/gettysburg.txt
scala> val lines=sc.textFile(gspeech_path)
lines: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[7]
at textFile at <console>:29
scala> val pairs = lines.map(x => (x.split(" ")(0), x))
pairs: org.apache.spark.rdd.RDD[(String, String)] =
MapPartitionsRDD[8] at map at <console>:3
scala> val temps:Seq[(String,Seq[Double])]=Seq(("SP",Seq(68,70,75)),
("TR",Seq(87,83,88,84,88)),
("EN",Seq(52,55,58,57.5)),
("ER",Seq(90,91.3,88,91)))
temps: Seq[(String, Seq[Double])] = List((SP,List(68.0, 70.0, 75.0)),
(TR,List(87.0, 83.0, 88.0, 84.0, 88.0)), (EN,List(52.0, 55.0, 58.0,
57.5)), (ER,List(90.0, 91.3, 88.0, 91.0)))
scala> var temps_rdd0=sc.parallelize(temps)
temps_rdd0: org.apache.spark.rdd.RDD[(String, Seq[Double])] =
ParallelCollectionRDD[9] at parallelize at <console>:29我想进一步研究一下,并查找MapPartitionsRDD和ParallelCollectionRDD的API,希望它们是基本org.apache.spark.rdd的子类。但是,当我搜索星火Scala (Scaladocs)时找不到这些类
我只能在spark.apache.org的Java文档中找到它们,而不是Scala文档。根据我对Scala的了解,这两种语言可以混合在一起,因为Spark是用Java编写的。不过,我希望就与农村发展有关的确切关系作出一些澄清。那么,我们是否有一个抽象Scala引用,其底层实现是一个Java,如此响应所示:
# Scala abstract RDD = Concrete Java MapPartitionsRDD
org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[7] 提前感谢你的帮助/解释。
发布于 2016-01-29 15:31:18
正如@Archeg在上面的评论中指出的,这些类确实是Scala类,可以在org.apache.spark.rdd.MapPartitionsRDD上找到
造成我困惑的原因是当我在MapPartitionsRDD中搜索时,我找不到星火Scaladoc (Scaladoc)
发布于 2017-05-18 06:28:15
MapPartitionsRDD是将提供的函数f应用于父RDD的每个分区的RDD。
默认情况下,它不保留分区preservesPartitioning (最后一个输入参数 - 为false )。如果为真,则保留原始RDD的分区。
MapPartitionsRDD是以下转换的结果:
https://stackoverflow.com/questions/35081321
复制相似问题