Spark中的算子都有哪些

举报
孙中明 发表于 2022/04/03 16:54:24 2022/04/03
【摘要】 Spark中的算子都有哪些 Spark中的算子都有哪些总的来说,spark分为三大类算子:Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理; Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算Action 行动算子:这类算子会触...

Spark中的算子都有哪些

Spark中的算子都有哪些

总的来说,spark分为三大类算子:

  • Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理; Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算

  • Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业; Action 算子会触发 Spark 提交作业(Job),并将数据输出 Spark系统

  • controller 控制操作:Spark中控制算子也是懒执行的,需要Action算子触发才能执行,主要是为了对数据进行缓存。
    控制算子有三种,cache,persist,(RDD 持久化原理)checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执行的。必须有一个action类算子触发执行。checkpoint算子不仅能将RDD持久化到磁盘,还能切断RDD之间的依赖关系。


1. Value数据类型的Transformation算子

输入分区与输出分区一对一型

  • map算子
  • flatMap算子
  • mapPartitions算子
  • glom算子

输入分区与输出分区多对一型

  • union算子
  • cartesian算子

输入分区与输出分区多对多型

  • grouBy算子

输出分区为输入分区子集型

  • filter算子
  • distinct算子
  • subtract算子
  • sample算子
  • takeSample算子

Cache型

  • cache算子
  • persist算子

2. Key-Value数据类型的Transfromation算子

输入分区与输出分区一对一

  • mapValues算子

对单个RDD或两个RDD聚集

  • combineByKey算子
  • reduceByKey算子
  • partitionBy算子
  • Cogroup算子

连接

  • join算子
  • leftOutJoin 和 rightOutJoin算子

3. Action算子

无输出

  • foreach算子

HDFS算子

  • saveAsTextFile算子
  • saveAsObjectFile算子

Scala集合和数据类型

  • collect算子
  • collectAsMap算子
  • reduceByKeyLocally算子
  • lookup算子
  • count算子
  • top算子
  • reduce算子
  • fold算子
  • aggregate算子
  • countByValue
  • countByKey

RDD 中 reduceBykey 与 groupByKey 哪个性能好,为什么

reduceByKey:reduceByKey 会在结果发送至 reducer 之前会对每个 mapper 在本地进行 merge,有点类似于在 MapReduce 中的 combiner。这样做的好处在于,在 map 端进行一次 reduce 之后,数据量会大幅度减小,从而减小传输,保证 reduce 端能够更快的进行结果计算。

groupByKey:groupByKey 会对每一个 RDD 中的 value 值进行聚合形成一个序列 (Iterator),此操作发生在 reduce 端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。同时如果数据量十分大,可能还会造成 OutOfMemoryError。

所以在进行大量数据的 reduce 操作时候建议使用 reduceByKey。不仅可以提高速度,还可以防止使用 groupByKey 造成的内存溢出问题。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。