spark3.0教程:RDD转换算子glom()

说明

将同一个分区里的元素合并到一个 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()


原文出处:/show_1IX1KKTpVM9r.html