大数据学习(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的数据处理和分析提供了强大的支持。

相关推荐
半兽先生2 分钟前
大模型技术开发与应用——5.大模型Agent开发(CrewAI)
大数据·人工智能·python·机器学习·ai
空杆推不起40 分钟前
穿透 Flink CDC 表层用法:数据库日志捕获机制、Flink Source 运行时、端到端一致性底层原理详解
大数据·数据库·flink
艾莉丝努力练剑1 小时前
【Linux:动静态库】Linux 动静态库与可执行文件
linux·运维·服务器·学习·面试·文件系统·动静态库
小邓的技术笔记1 小时前
DeepSeek 大模型落地应用与场景实战指南
大数据·人工智能
大大大大晴天️1 小时前
读懂 StarRocks 架构:FE、BE、CN 与 MPP 查询链路协同
大数据·starrocks·olap
2601_962966641 小时前
大学毕业可考取的市场营销专业实用证书指南
大数据·数据分析
宁风NF1 小时前
JavaScript:内存、垃圾回收、性能优化
开发语言·前端·javascript·学习·性能优化·es6
北京晶数信息科技2 小时前
基于现有数据采集系统与智慧监管平台的成品油智慧监管+交易即开票一体化解决方案 (一)
大数据
编程圈子2 小时前
电机驱动开发学习22. 霍尔电角度标定(自动/手动标定与Flash固化)
驱动开发·学习
WA内核拾荒者2 小时前
WhatsApp 对话内容的质量评估体系与自动化检测方案
大数据·人工智能·自动化