Spark面试题

2019-11-03  本文已影响0人  lj72808up

1. spark如何实现容错性?

spark的容错性有2个手段, 检查点和RDD血统

2. spark和hadoop的mr有什么区别

首先, 两者都是基于MR的计算模型, 但有很多不同

3. RDD中的宽窄依赖? 有什么作用?

4. cache和persist的区别?

它们都是用来进行缓存RDD的。

一共有几种缓存级别

5. 广播变量和累加器?

6. groupByKey和reduceByKey哪个好

reduceByKey更好

7. kafka

8. Spark处理数据倾斜有什么好方法

简单一句: Spark 数据倾斜的几种场景以及对应的解决方案,包括避免数据源倾斜,调整并行度,使用自定义 Partitioner,使用 Map 侧 Join 代替 Reduce 侧 Join(内存表合并),给倾斜 Key 加上随机前缀等。下面分情况讨论:

9. Spark为什么快,Spark SQL 一定比 Hive 快吗

spark比hive快的原因主要有2, 一个是shuffle后的结果可以存储在磁盘中, 另一个是DAG执行计划里, 多个job串联时结果不必回写到HDFS中.
因此, spark是否比hive快要是有一定条件的, 一个反例是: 当查询只有1次shuffle操作的时候, hive往往比spark还快, 因为MR的map任务往往生成的更多

Select month_id, sum(sales) from T group by month_id;  --反例

10. Job 和 Task 怎么理解

11. Spark作业提交-执行流程是怎么样的

  1. spark-submit 提交代码后,执行new SparkContext(),在SparkContext里构造DAGSchedulerTaskScheduler
  2. DAGScheduler为1个Job生成多个Stage(stage分为ShuffleMapStage和ResultStage), 每个Stage创建一个TaskSet.
  3. TaskScheduler会把每一个TaskSet里的Task,提交到Executor上执行。
  4. Executor上有线程池(CachedTHreadPool), 每收到一个Task. 先封装成RunnerTask, 再从线程池中取出一个线程执行这个Task

12. Spark UDF?

13. Spark UDAF?

上一篇 下一篇

猜你喜欢

热点阅读