在日常的etl开发的过程中,不管是使用spark,或者是hive来做开发,经常会遇见任务跑的特别慢,或者任务出现oom,或者数据量并不大,但是任务就是跑的特别慢等等情况。
关于任务的优化,我将自己工作中用到的一些小的trick分享出来。
数据倾斜
数据倾斜是什么?数据倾斜是在计算数据的时候,数据的分散度不够,大量的数据集中在一台或者几台机器上计算,导致整个计算过程过慢甚至失败。
举个例子,1TB的数据,十台机器并行计算,由于数据分区不合理,9台机器上各承担了10GB的计算任务,剩下910GB的数据在一台机器上。因而负载大的机器,需要的资源过大,运行的时间过长等等问题。
数据倾斜的表现