大家好,我是勾叔。今天的面试题是:Spark的算子可以分哪两类,这两类算子的区别是什么?并分别列举6个这两类算子,列举6个会产生Shuffle的算子。
问题分析
考察基本功,从多个维度考察对算子的理解。核心问题回答
Spark的算子可以分为两类:Transformation、Action。 Transformation:从现有的数据集创建一个新的数据集,返回一个新的 RDD 操作。Transformation都是惰性的,它们并不会立刻执行,只是记住了这些应用到 RDD 上的转换动作;
触发在 RDD 上的计算,这些计算可以是向应用程序返回结果,也可以是向存储系统保存数据。
延迟执行、返回 RDD ;
触发 Job ,返回的结果一定不是 RDD 。
map、mapVaules、filter、flatMap、mapPartitions、uoin、join、distinct、xxxByKey;
count、collect、collectAsMap、first、reduce、fold、aggregate、saveAsTextFile。
- 一堆的 xxxByKey(sortBykey、groupByKey、reduceByKey、foldByKey、aggreageByKey、combineByKey)。备注:不包括countByKey;
- join相关(join、leftOuterJoin、rightOuterJoin、fullOuterJoin、cogroup);
- distinct、intersection、subtract、partionBy、repartition。
问题扩展
算子之间的区别、使用条件; 算子是如何实现的,如distinct。 大家如果想进行更深入的了解和学习,请关注勾叔谈大数据参与更多互动。 推荐阅读: 【每日一题】描述一下你对RDD的理解。 【每日一题】Kafka的偏移量Offset存放在哪儿,为什么?(瓜子二手车) 【每日一题】说一下Hive怎么优化?(腾讯) 【每日一题】Redis的热键问题?Redis的数据类型 (京东)