Hive SQL 中容易发生数据倾斜的情况有很多,以下列举了两种常见的场景:

  • 'B count distinct 时数据量大特殊值过多': 当 count distinct 统计的字段数据量很大,且存在大量的重复值或特殊值时,就会导致数据倾斜。因为 MapReduce 任务需要对所有数据进行排序和去重,而特殊值过多会导致数据分布不均匀,某些节点处理的数据量远超其他节点,从而导致任务执行效率低下。

  • 'D Join 时其中一个表较小,但 key 集中': 当两个表进行 Join 时,如果其中一个表数据量很小,但 key 值集中在一个或几个特定值上,就会导致数据倾斜。因为 MapReduce 任务需要将小表的数据广播到所有节点,而 key 集中会导致某些节点处理的数据量远超其他节点,从而导致任务执行效率低下。

除了以上两种情况,还有其他一些场景也容易发生数据倾斜,例如 group by 时维度过少,某个值的量太大,以及 sort by 排序时特殊值过多等等。为了避免数据倾斜,我们可以采取一些措施,例如对数据进行预处理,将数据均匀分布到不同节点,或者使用一些优化策略,例如 MapReduce 中的 Combiner 和 Shuffle 等等。


原文地址: https://www.cveoy.top/t/topic/pgMg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录