假设我有一个如下所示的整数的RDD:
(1,2,3,4,5,6,7,8)
(即RDD中有八个项目)
我想将RDD折叠成对,所以看起来像这样:
((1,2),(3,4),(5,6),(7,8)
(即,RDD中有四个项目)。
我认为可能有一个分区或聚合函数,但似乎没有。
我的问题是:在火花中,如何将RDD折叠成对?
答案 0 :(得分:1)
这正是sliding
库中可用的mllib
函数
// Import the mllib library
scala> import org.apache.spark.mllib.rdd.RDDFunctions._
import org.apache.spark.mllib.rdd.RDDFunctions._
scala> val rdd = spark.sparkContext.parallelize(Seq(1,2,3,4,5,6,7,8))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[10] at parallelize at
<console>:29
scala> rdd.sliding(2,2).map(x => (x(0), x(1))).foreach(println)
(1,2)
(5,6)
(3,4)
(7,8)
或更佳
rdd.sliding(2,2).map{case Array(x,y) => (x,y) }.foreach(println)
希望这对您有帮助!