不产生shuffle的转换算子及相应的举例

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 e
10
})
val arr: Array[Int] = res.collect()
arr.foreach(println)
sc.stop()

map的输入变换函数应用于RDD中所有元素,而mapPartitions应用于所有分区。区别于mapPartitions主要在于调用粒度不同。如parallelize(1 to 10, 3),map函数执行10次,而mapParti

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值