订阅更新

Spark 面试题70 道

执行原理、Shuffle、内存、调优、Structured Streaming

  1. 002 你有遇到过 Spark 的数据倾斜吗?
  2. 008 Spark Shuffle 为什么慢?怎么优化?
  3. 018 Spark 任务 OOM,你怎么排查?
  4. 021 Spark Executor 参数怎么配置?
  5. 025 Spark 广播 Join 什么时候用?有哪些坑?
  6. 036 Spark 宽依赖和窄依赖有什么区别?
  7. 041 Spark Cache 和 Persist 有什么区别?
  8. 043 Spark Repartition 和 Coalesce 有什么区别?
  9. 048 Spark 推测执行什么时候开?有哪些坑?
  10. 053 Spark AQE 能解决什么问题?有什么局限?
  11. 058 Spark 中 Job、Stage 和 Task 是怎么划分的?
  12. 063 Spark SQL Catalyst 优化器是怎么工作的?
  13. 100 Spark SQL 的 Broadcast、SortMerge 和 ShuffleHash Join 怎么选?
  14. 110 Spark 动态分区裁剪 DPP 是怎么工作的?
  15. 123 Spark Checkpoint 和 Cache 有什么区别?
  16. 124 Spark 为什么重视序列化?Java 和 Kryo 怎么选?
  17. 125 Spark 动态资源分配是怎么工作的?
  18. 126 Spark 为什么会写出大量小文件?怎么控制?
  19. 136 Spark RDD、DataFrame 和 Dataset 有什么区别?
  20. 147 Spark Driver 和 Executor 分别负责什么?
  21. 148 Spark 统一内存管理是怎么工作的?
  22. 157 Spark 分区数怎么设置?
  23. 158 Spark 的 map 和 mapPartitions 有什么区别?
  24. 166 Spark 广播变量和累加器有什么区别?
  25. 167 Spark RDD Lineage 如何实现容错?
  26. 177 Spark UDF 为什么常比内置函数慢?
  27. 187 Spark Tungsten 为什么能提升执行效率?
  28. 188 Spark Whole-Stage CodeGen 是怎么工作的?
  29. 189 Spark Structured Streaming 的 Append、Update 和 Complete 模式怎么选?
  30. 190 Spark Structured Streaming 如何处理迟到数据和状态清理?
  31. 205 Spark FetchFailedException 怎么排查?
  32. 206 Spark Task Locality 是什么?为什么会出现 ANY?
  33. 215 Spark Spill 是什么?为什么会频繁发生?
  34. 231 Spark collect 为什么容易撑爆 Driver?toLocalIterator 能解决吗?
  35. 232 Spark 为什么惰性执行?多个 Action 会重复计算吗?
  36. 245 Spark foreachBatch 怎么保证幂等?有 Checkpoint 还会重复写吗?
  37. 255 Spark SQL ANSI 模式有什么影响?脏数据类型转换怎么处理?
  38. 265 Spark 为什么报 Task not serializable?闭包里不能放什么?
  39. 275 Spark SQL 加了 Join Hint 就一定生效吗?为什么提示广播仍然慢?
  40. 286 Spark Stage 卡在99%都是数据倾斜吗?慢尾任务怎么定位?
  41. 295 Spark SQL 加 LIMIT 10 就只读十行吗?为什么查询还是很慢?
  42. 305 Spark 广播变量能实时更新吗?规则变更怎么保证任务用同一版本?
  43. 315 Spark 同一份 DataFrame 执行两次 Action,结果一定相同吗?
  44. 325 Spark 报文件不存在怎么办?开启 ignoreMissingFiles 就修好了吗?
  45. 337 Spark reduceByKey 为什么常比 groupByKey 快?所有聚合都能替换吗?
  46. 338 Spark 流任务改了代码,旧 Checkpoint 还能接着用吗?
  47. 346 Spark 堆内存没满,Executor 为什么还会被杀?memoryOverhead 怎么看?
  48. 04-01 Spark作业突然OOM了,你怎么排查和解决?
  49. 04-02 两张大表Join跑了2小时,你怎么优化?
  50. 04-03 某个Task比其他慢了10倍——Spark数据倾斜怎么解决?
  51. 04-04 用DataFrame还是用RDD?为什么现在几乎没人用RDD了?
  52. 04-05 Spark作业提交后迟迟不开始跑——YARN资源分配怎么排查?
  53. 04-06 Shuffle Write阶段特别慢,磁盘IO打满了——Shuffle原理和优化
  54. 04-07 cache()和persist()用了反而更慢了——缓存什么时候该用什么时候不该用?
  55. 04-08 Spark SQL的执行计划看不懂——Catalyst优化器到底做了什么?
  56. 04-09 同样的SQL在Hive跑10分钟在Spark跑2分钟——Spark为什么更快?
  57. 04-10 AQE开了以后作业快了3倍——自适应查询执行是怎么回事?
  58. 04-11 Spark Streaming作业丢数据了——Exactly-Once怎么保证?
  59. 04-12 Structured Streaming vs Spark Streaming,新项目该用哪个?
  60. 04-13 Executor频繁被杀——Spark内存模型和调优思路
  61. 04-14 小文件太多导致下游Hive查询变慢——Spark写出文件怎么控制?
  62. 04-15 Spark on YARN的cluster模式和client模式到底有什么区别?
  63. 04-16 动态资源分配开了以后资源一直不释放——怎么回事?
  64. 04-17 Spark读写Delta Lake/Iceberg——数据湖和Spark怎么配合?
  65. 04-18 Spark作业跑到一半Task失败了——容错机制怎么工作的?
  66. 04-19 并行度设多少合适?Task数量和分区数怎么定?
  67. 04-20 请描述一个你用Spark做过的项目
  68. 16-05 Spark 3.0的AQE开了,还需要手动处理倾斜吗?
  69. 16-08 Hive作业跑了6小时还没完——Hive里的数据倾斜和Spark有什么不同?
  70. 16-11 OLAP引擎里也有倾斜——Doris、ClickHouse的倾斜和Spark有什么不同?