spark学习 - 数据倾斜


spark学习 - 数据倾斜

Example

spark学习 - 数据倾斜
spark学习 - 数据倾斜

spark数据倾斜现象

  • 单个Executor执行时间久
  • OOM
    • Executor
    • Driver
      spark学习 - 数据倾斜
  • Timeout
    spark学习 - 数据倾斜

数据倾斜原因

spark学习 - 数据倾斜

发现数据倾斜

  1. 使用sample算子进行抽样
  2. 使用countByValue对抽样数据进行聚合计算
  3. 取出前N观察
    spark学习 - 数据倾斜

数据倾斜 Solution 1 – 使用reduceByKey

  • groupByKey转换为reduceByKey
    • reduceByKey可以在Map端合并
    • 类似于MapReduce中的Combiner
      spark学习 - 数据倾斜

数据倾斜 Solution 2 – 两阶段聚合

spark学习 - 数据倾斜

数据倾斜 Solution 3 – 扩增数据

  • 大表随机添加N种前缀,小表扩增N倍
    spark学习 - 数据倾斜

数据倾斜 Solution 4 – MapSideJoin

spark学习 - 数据倾斜