SparkRDD——行动算子

一、行动算子定义

spark的算子可以分为trans action算子 以及 action算子 ,即变换/转换 算子。如果执行一个RDD算子并不触发作业的提交,仅仅只是记录作业中间处理过程,那么这就是trans action算子 ,相反如果执行这个 RDD 时会触发 Spark Context 提交 Job 作业,那么它就是 action算子及行动算子。
总结来说就是在Spark中,转换算子并不会马上进行运算的,即所谓的“惰性运算”,而是在遇到行动算子时才会执行相应的语句的,触发Spark的任务调度并开始进行计算。
我们可以将行动算子分为两类:

  • 1,数据运算类:主要用于触发RDD计算,并得到计算结果返回给Spark程序或Shell界面;
  • 2,数据存储类:用于触发RDD计算后,将结果保存到外部存储系统中,如HDFS文件系统或数据库。

二、总览

一、数据运算类:
1、reduce              将rdd中的数据进行聚合,先进行分区内聚合,在进行分区间聚合
2、collect             将rdd中的数据按分区号采集,并以数组的形式返回所有数据
3、collectAsMap        收集Key/Value型RDD中的元素,并以map的形式返回数据
4、foreach             循环遍历分区内数据,该算子执行位置是在Executor端
5、count               计算rdd中数据个数
6、first               取rdd中数据的第一个
7、take                取rdd中数据的前num个
8、takeOrdered         将rdd中的数据进行排序后取前num个
9、aggregate           类似于aggregateByKey算子,同样两个参数列表,分别传递初始值和分区内计算规则和分区间计算规则。
10、fold               简化版的aggregate,分区内计算规则和分区间计算规则一样。
11、countByKey         根据键值对中的key进行计数,返回一个map,对应了每个key在rdd中出现的次数。
12、countByValue       根据rdd中数据的数据值进行计数,注不是键值对中的value,同样返回一个map,对应每个数据出现的次数。
13、max                求rdd中数据的最大值
14、min                求rdd中数据的最小值
二、数据存储类:
1、saveAsTextFile      存储为文本文件         
2、saveAsObjectFile    存储为二进制文件
3、saveAsSequenceFile  要求数据必须为<k,v>类型, 保存为 Sequencefile文件

注:sequenceFile文件是Hadoop用来存储二进制形式的 (Key,Value) 对而设计的一种平面文件。详细可以看这篇文章了解:链接

三、数据运算类action算子

1、reduce

通过传入的方法聚集rdd中所有的元素,先聚合分区内的数据,再聚合分区间的数据
def reduce(f: (T, T) => T): T

val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4))
val count: Int = rdd.reduce((_: Int) + (_: Int))

在这里插入图片描述

2、collect

数据采集,以数组Array的形式按分区顺序返回数据集中的所有元素
def collect(): Array[T]

val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4))
val ints: Array[Int] = rdd.collect()
println(ints.mkString(","))

在这里插入图片描述

3、collectAsMap

收集Key/Value型RDD中的元素,并以map的形式返回数据
注:只有key/value类型的RDD才有这个方法
def collectAsMap(): Map[K, V]

val rdd2: RDD[(String, Int)] = sc.makeRDD(List(("a", 1), ("a", 2), (
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值