首页  

spark map和mapPartitions     所属分类 spark 浏览量 196
Map 分区内数据逐个执行   
mapPartitions  以分区为单位进行批处理

MapPartitions 需要传递一个迭代器,返回一个迭代器,元素可以增加或减少

val sparkconf = new SparkConf().setMaster("local[*]").setAppName("test")
var sc =  new SparkContext(sparkconf);
val rdd = sc.makeRDD(List(1,2,3,4,5,6),1)
val value = rdd.map(num=>{
  println(">>>>"+num);
  num
})
val value2 = value.map(num=>{
  println("-----"+num);
  num
})
value2.collect()
sc.stop();


拆成2个分区执行
val rdd = sc.makeRDD(List(1,2,3,4,5,6),2)

两个分区并行执行 


mapPartitions val rdd = sc.makeRDD(List(1,2,3,4,5,6),2) val value = rdd.mapPartitions(iter=>{ println(">>>>"); iter }) value.collect() mapPartitionsWithIndex val rdd = sc.makeRDD(List(1,2,3,4,5,6),2) val value = rdd.mapPartitionsWithIndex((index,iter)=>{ println(">>>> index="+index); iter }) value.collect() 计算每个分区的最大值 val rdd = sc.makeRDD(List(1,2,3,4,5,6),2) val value = rdd.mapPartitions(iter=>{ List(iter.max).iterator }) value.collect().foreach(println) val rdd = sc.makeRDD(List(1,2,3,4,5,6),2) val value = rdd.mapPartitionsWithIndex((index,iter)=>{ List(index+"_"+iter.max).iterator }) value.collect().foreach(println)

上一篇     下一篇
SparkSQL join的三种实现方式

Spark知识点小结

Flink核心技术要点

spark map算子各种写法

idea maven 项目 scala代码 不会自动编译

spark3 例子