spark map和mapPartitions
所属分类 spark
浏览量 635
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 例子