大数据学习(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 个坑
大数据·人工智能
fanstuck2 小时前
从0到提交,如何用 ChatGPT 全流程参与建模比赛的
大数据·数学建模·语言模型·chatgpt·数据挖掘
春日见2 小时前
vscode代码无法跳转
大数据·人工智能·深度学习·elasticsearch·搜索引擎
ASKED_20193 小时前
Langchain学习笔记一 -基础模块以及架构概览
笔记·学习·langchain
萤丰信息3 小时前
AI 筑基・生态共荣:智慧园区的价值重构与未来新途
大数据·运维·人工智能·科技·智慧城市·智慧园区
(❁´◡`❁)Jimmy(❁´◡`❁)3 小时前
Exgcd 学习笔记
笔记·学习·算法
云小逸5 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
冰糖猕猴桃6 小时前
【AI】把“大杂烩抽取”拆成多步推理:一个从单提示到多阶段管线的实践案例
大数据·人工智能·ai·提示词·多步推理
盐焗西兰花7 小时前
鸿蒙学习实战之路-Reader Kit构建阅读器最佳实践
学习·华为·harmonyos
才盛智能科技7 小时前
K链通×才盛云:自助KTV品牌从0到1孵化超简单
大数据·人工智能·物联网·自助ktv系统·才盛云