每日一题Spark的算子可以分为哪两类,区别是什么?

Posted 勾叔谈大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题Spark的算子可以分为哪两类,区别是什么?相关的知识,希望对你有一定的参考价值。

大家好,我是勾叔。今天的面试题是:Spark的算子可以分哪两类,这两类算子的区别是什么?并分别列举6个这两类算子,列举6个会产生Shuffle的算子。


【每日一题】Spark的算子可以分为哪两类,区别是什么?

问题分析


考察基本功,从多个维度考察对算子的理解。

【每日一题】Spark的算子可以分为哪两类,区别是什么?
【每日一题】Spark的算子可以分为哪两类,区别是什么?

核心问题回答



Spark的算子可以分为两类:Transformation、Action。
Transformation:
  • 从现有的数据集创建一个新的数据集,返回一个新的 RDD 操作。Transformation都是惰性的,它们并不会立刻执行,只是记住了这些应用到 RDD 上的转换动作;

Action:
  • 触发在 RDD 上的计算,这些计算可以是向应用程序返回结果,也可以是向存储系统保存数据。


Transformation 最重要的特点:
  • 延迟执行、返回 RDD ;

Action最重要的特点:
  • 触发 Job ,返回的结果一定不是 RDD 。


常见的 Transformation 包括:
  • map、mapVaules、filter、flatMap、mapPartitions、uoin、join、distinct、xxxByKey;

常见的 Action 包括:
  • count、collect、collectAsMap、first、reduce、fold、aggregate、saveAsTextFile。


有Shuffle的 Transformation 包括:
  • 一堆的 xxxByKey(sortBykey、groupByKey、reduceByKey、foldByKey、aggreageByKey、combineByKey)。备注:不包括countByKey;
  • join相关(join、leftOuterJoin、rightOuterJoin、fullOuterJoin、cogroup);
  • distinct、intersection、subtract、partionBy、repartition。

【每日一题】Spark的算子可以分为哪两类,区别是什么?

问题扩展


算子之间的区别、使用条件;
算子是如何实现的,如distinct。
大家如果想进行更深入的了解和学习,请关注勾叔谈大数据参与更多互动。



推荐阅读:




以上是关于每日一题Spark的算子可以分为哪两类,区别是什么?的主要内容,如果未能解决你的问题,请参考以下文章

RDD转换算子与操作算子

RDD 算子分类

Spark 算子

每日一题说说Flink相比传统的Spark Streaming区别?

什么是DOS攻击?分为哪些类型?

Spark篇---SparkStreaming中算子中OutPutOperator类算子