说明
将同一个分区里的元素合并到一个 Array 里
应用场景
对每个分区的数据,做集合特有的处理,如:求每个分区的最大值
例子
val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)
//从RDD[Int]可知,该rdd中元素是Int
val rdd:RDD[Int] = sc.makeRDD( List( 1,2,3,4,5,6 ),2 )
//从RDD[Array[Int]]可知,该rdd中元素是 Array[Int] ,是数组
val resRDD:RDD[Array[Int]] = rdd.glom()
var i=0
resRDD.collect().foreach(e=>{
println("----"+i)
i=i+1
// e.foreach(println(_))
println(e.mkString(","))
})
sc.stop()
执行结果:
----0
1,2,3
----1
4,5,6
案例
获取每个分区的最大值,并求最大值的和
val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)
val rdd:RDD[Int] = sc.makeRDD( List( 1,2,3,4,5,6 ),2 )
val resRDD:RDD[Array[Int]] = rdd.glom()
val resRDD2 = resRDD.map(_.max)
val res=resRDD2.collect().sum
println(res)
sc.stop()
