spark学习 - 数据倾斜

文章目录

    • Example
    • spark数据倾斜现象
    • 数据倾斜原因
    • 发现数据倾斜
    • 数据倾斜 Solution 1 – 使用reduceByKey
    • 数据倾斜 Solution 2 – 两阶段聚合
    • 数据倾斜 Solution 3 – 扩增数据
    • 数据倾斜 Solution 4 – MapSideJoin

spark学习 - 数据倾斜_第1张图片

Example

spark学习 - 数据倾斜_第2张图片
spark学习 - 数据倾斜_第3张图片

spark数据倾斜现象

  • 单个Executor执行时间久
  • OOM
    • Executor
    • Driver
      在这里插入图片描述
  • Timeout
    在这里插入图片描述

数据倾斜原因

spark学习 - 数据倾斜_第4张图片

发现数据倾斜

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

数据倾斜 Solution 1 – 使用reduceByKey

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

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

spark学习 - 数据倾斜_第7张图片

数据倾斜 Solution 3 – 扩增数据

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

数据倾斜 Solution 4 – MapSideJoin

spark学习 - 数据倾斜_第9张图片

你可能感兴趣的:(Spark学习笔记)