Transformation和Action常用算子


RDD操作分为lazy和non-lazy两种

Transformation(lazy):也称转换操作、转换算子

Action(non-lazy):立即执行,也称动作操作、动作算子

1、Transformation

对于转换操作,RDD的所有转换都不会直接计算结果。

  • 仅记录作用于RDD上的操作

  • 当遇到动作算子(Action)时才会进行真正计算

1.1 map

map(func) :对原RDD中每个元素运用func函数,并生成新的RDD

map算子输入分区与输出分区一一对应。

val rdd1 = sc.makeRDD(1 to 9,2)
rdd1.map(_*2).collect.foreach(println)
//输出 2 4 6 8 10 12 14 16 18

1.2 filter

filter(filter):对原RDD中每个元素使用func函数进行过滤,并生成新的RDD

val rdd1 = sc.makeRDD(1 to 9,2)
rdd1.filter(_>5).collect.foreach(println)
//输出 6 7 8 9

1.3 mapValues

原RDD中的Key保持不变,与新的Value一起组成新的RDD中的元素,仅适用于PairRDD。

val rdd1=sc.parallelize(List("dog","tiger","lion","cat","panther","eagle"))
val rdd4 = rdd3.map(x=>(x.length,x))
rdd4.mapValues(x=>"_"+x+"_").collect.foreach(println)
输出:(3,_dog_)
(5,_tiger_)
(4,_lion_)
(3,_cat_)
(7,_panther_)
(5,_eagle_)

1.4 distinct

distinct([numTasks])):去重

val conf = new SparkConf
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值