需求:获取每个分区的最大值
package com.atguigu.bigdata.spark.core.operator.transform.test
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object RDD_mapPartitions_02 {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")
val sc = new SparkContext(sparkConf)
// TODO 算子 -mapPartitions - 将待处理的数据以分区为单位发送到计算节点进行处理,这里的处理是指可以进行任意的处理,哪怕是过滤数据
// 需求:获取每个分区的最大值
val rdd = sc.makeRDD(List(1, 2, 3, 4), 2)
// 分析
// 第一个分区[1,2] 第二个分区[3,4]
// [2],[4]
val mapRDD: RDD[Int] = rdd.mapPartitions(
iter => {
// iter 是每一个分区的数据然后.max取整一个分区的最大值,但是返回值必须是迭代器,所以使用List包裹加.iterator
List(iter.max).iterator
}
)
mapRDD.collect().foreach(println)
sc.stop()
}
}