大数据学习(35)- spark- action算子

&&大数据学习&&

🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门

💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


Spark中的Action算子是一类非常重要的算子,用于触发Spark作业的运行,并将数据输出到Spark系统外部或进行聚合计算。

一、Action算子的基本概念

在Spark中,算子(Operators)分为两类:Transformation算子和Action算子。Transformation算子用于生成新的RDD(弹性分布式数据集),而Action算子则用于触发SparkContext提交Job作业,并将数据输出Spark系统。Action算子会遍历RDD中的数据,并返回一个结果值(如一个数字、数组或集合),或者将数据写入外部存储系统。

二、常见的Action算子

  1. reduce(func):通过函数func聚集RDD中的元素。该函数先聚集各分区的数据集,再聚集分区之间的数据。func接收两个参数,返回一个新值,新值再作为参数继续传递给函数func,直到得到最后一个元素。例如,可以使用reduce算子来计算RDD中所有元素的和。
  2. collect():将RDD中的所有元素以数组的形式返回给Driver程序。为防止Driver程序内存溢出,一般要控制返回的数据集大小。
  3. count():返回RDD中元素的个数。
  4. first():返回RDD中的第一个元素。
  5. take(n):返回一个由RDD的前n个元素组成的数组。即使n=1,返回的也是一个仅有一个元素的数组。对数据集的数据类型和是否有序没有任何规定。
  6. top(n):按默认或指定的排序规则返回前n个元素,默认按降序输出。
  7. takeOrdered(n,[ordering]):按自然顺序或指定的排序规则返回前n个元素。
  8. countByKey():作用于K-V类型的RDD上,统计每个key的个数,返回(K,K的个数)的集合。
  9. collectAsMap():作用于K-V类型的RDD上,将结果以Map的形式返回给Driver程序。与collect不同的是,collectAsMap函数不包含重复的key,对于重复的key,后面的元素会覆盖前面的元素。
  10. lookup(k):作用于K-V类型的RDD上,返回指定K的所有V值。
  11. aggregate(zeroValue:U)(seqOp:(U,T) => U, comOp:(U,U) => U):分区的数据通过初始值zeroValue和分区内的数据进行聚合(seqOp函数),然后再和初始值zeroValue进行分区间的数据聚合(comOp函数)。
  12. fold(zeroValue:T)(op:(T,T) => T):通过op函数聚合各分区中的元素及合并各分区的元素。op函数需要两个参数,在开始时第一个传入的参数为zeroValue。fold函数的作用相当于seqOp和comOp函数都相同的aggregate函数。
  13. saveAsTextFile(path:String):将最终的结果数据以文本的形式保存到指定的HDFS目录或本地文件系统中。
  14. saveAsSequenceFile(path:String):将最终的结果数据以sequence的格式保存到指定的HDFS目录中。

三、Action算子的使用场景

Action算子通常用于数据的最终输出或聚合计算。例如,可以使用collect算子将RDD中的所有数据收集到Driver程序中,然后进行处理或分析;可以使用reduce算子对RDD中的数据进行聚合计算,如求和、求最大值等;可以使用saveAsTextFile或saveAsSequenceFile算子将结果数据保存到外部存储系统中,以便后续使用。

四、注意事项

  1. 在使用Action算子时,需要注意数据的规模和内存限制,以防止内存溢出等问题。
  2. 对于大规模的数据处理任务,建议避免使用collect等会将数据全部收集到Driver程序的Action算子,而使用如saveAsTextFile等将结果直接写入外部存储系统的算子。

Spark中的Action算子是触发Spark作业运行的关键算子之一。它们提供了多种方式来输出和聚合RDD中的数据,为Spark的数据处理和分析提供了强大的支持。

相关推荐
笨蛋少年派6 分钟前
Flume数据采集工具简介
大数据
梦里不知身是客118 分钟前
spark中如何调节Executor的堆外内存
大数据·javascript·spark
d111111111d21 分钟前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法
小C8061 小时前
【Starrocks + Hive 】BitMap + 物化视图 实战记录
大数据
嗷嗷哦润橘_2 小时前
AI Agent学习:MetaGPT之我的工作
人工智能·学习·flask
知识分享小能手2 小时前
CentOS Stream 9入门学习教程,从入门到精通,Linux日志分析工具及应用 —语法详解与实战案例(17)
linux·学习·centos
2301_783360132 小时前
【学习笔记】关于RNA_seq和Ribo_seq技术的对比和BAM生成
笔记·学习
qq_397731512 小时前
Objective-C 学习笔记(第9章)
笔记·学习·objective-c
西格电力科技3 小时前
面向工业用户的绿电直连架构适配技术:高可靠与高弹性的双重设计
大数据·服务器·人工智能·架构·能源