6.1.1.map
做映射,处理的单位是一条数据
val sc: SparkContext = SparkUtil.getSparkContext()
//创建RDD
val rdd: RDD[Int] = s
c.parallelize(1 to 10 , 3)
//对RDD中的每个元素进行操作 返回一个新的RDD
val res: RDD[Int] = rdd.map(e=>e*10)
// 将结果RDD收集到本地 成本地数组
val arr: Array[Int] = res.collect()
arr.foreach(println)
sc.stop()
6.1.2 ***mapPartitions
以分区为单位进行map操作,一个分区就是一个迭代器
val sc: SparkContext = SparkUtil.getSparkContext()
//创建RDD
val rdd: RDD[Int] = sc.parallelize(1 to 10, 3)
// 传递的是一个迭代器 , 三个分区只执行三次 效率由于map
val res: RDD[Int] = rdd.mapPartitions(iters=>{
for(e <- iters) yield e10
})
val arr: Array[Int] = res.collect()
arr.foreach(println)
sc.stop()
map的输入变换函数应用于RDD中所有元素,而mapPartitions应用于所有分区。区别于mapPartitions主要在于调用粒度不同。如parallelize(1 to 10, 3),map函数执行10次,而mapParti