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算子是哪一个。