|
|
|
@ -579,3 +579,24 @@ spark.shuffle.io.retryWait 5s
|
|
|
|
|
2.通过算子获取一个RDD后,可以通过一些过滤操作,进行数据过滤。
|
|
|
|
|
|
|
|
|
|
3.可以使用压缩算子提前性能。
|
|
|
|
|
## 数据倾斜
|
|
|
|
|
### 数据倾斜解决方案之原理以及现象分析
|
|
|
|
|
1.数据倾斜的原理
|
|
|
|
|
|
|
|
|
|
spark进行shuffle时,由于数据分配不均匀,导致某个Task的数据过大,这个Task运行时间过长,这就是数据倾斜。
|
|
|
|
|
|
|
|
|
|
2.数据倾斜的现象
|
|
|
|
|
|
|
|
|
|
spark数据倾斜,有两种表现:
|
|
|
|
|
|
|
|
|
|
1.大部分的task,都执行的特别特别快,有几个task执行的特别特别慢,前面的task一般1s可以执行完5个,后面发现1000个task,999task要执行1小时或者2小时才能执行完一个task
|
|
|
|
|
|
|
|
|
|
2.运行的时候,其他task执行造成,没有什么问题,但是有的task,就突然出现OOM,task failed,task lost反复执行几次都是某个task跑不通,最后挂掉。
|
|
|
|
|
|
|
|
|
|
3.数据倾斜的产生原因与定位
|
|
|
|
|
|
|
|
|
|
根据log去定位,出现出现数据倾斜的原因,基本只可能因为出现了shuffle操作的在shuffle的过程中,出现了数据倾斜的问题。因为某个,或者某些key对应的数据,远高于其他key。
|
|
|
|
|
|
|
|
|
|
1.在程序中找到产生shuffle得算子
|
|
|
|
|
|
|
|
|
|
2.看log,log一般会报你的哪一行代码,导致OOM异常,看看执行到第几个stage。
|
|
|
|
|