Spark数据倾斜——【笔记二】

本文主要探讨了Spark数据倾斜的问题及其解决方案,包括避免Shuffle、调整key粒度、过滤倾斜key、提高reduce并行度、使用随机key双重聚合、转换reduce join为map join以及采用Sample采样和扩容进行join等策略。
摘要由CSDN通过智能技术生成

Spark数据倾斜——【笔记二】

[课程链接]——https://www.bilibili.com/video/av54322051?p=50

一、问题描述

    Spark中数据倾斜问题主要是指Shuffle过程中出现的数据倾斜问题,由于不同的key对应不同的数据量导致不同的task所处理的数据量不同的问题。
    注意,要区分开数据倾斜与数据过量这两种情况,数据倾斜式指少数task被分配了绝大多数的数据,因此少数task运行缓慢;数据过量是指所有task被分配的量都很大,相差不多,所有的task都运行缓慢。
    数据倾斜的表现:a.Spark作业中大部分task都执行迅速,只有有限几个task执行的非常慢,此时有可能是数据倾斜,作业都可以运行,但是运行非常慢;b.Spark作业的大部分task都执行迅速,但有的task在执行过程中突然报OOM错误,此时可能出现数据倾斜,且作业无法正常运行。
    定位数据倾斜问题:a.查阅代码中的Shuffle算子,例如reduceByKey, countByKey, groupByKey, join等算子;b.查看Spark作业的log文件,log文件对于代码错误会精确到某一行,根据异常定位到代码位置来明确错误发生在第几个Stage,对应的Shuffle算子是哪一个。

二、解决方案

  1 聚合原数据

    1.1 避免Shuffle过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值