当前位置:   article > 正文

Hive---数据倾斜的产生及解决方法_hive 数据倾斜

hive 数据倾斜

一、数据倾斜的定义

数据倾斜是指在并行进行数据处理的时候,由于单个partition的数据显著多余其他部分,分布不均匀,导致大量数据集中分布到一台或者某几台计算节点上,使得该部分的处理速度远低于平均计算速度,成为整个数据集处理的瓶颈,从而影响整体计算性能。

 

二、几种数据倾斜的解决方案

1、空值引发的数据倾斜

        在数据采集时,判断导致数据倾斜的key是不是提前过滤掉了。在inner join,也就是使用内连接时,hive默认过滤掉了空值,但对于left join等等,会保留左边有的值。空KEY过滤的使用场景:1.非inner join;2. 不需要字段为Null的。

        两种过滤方式:

          (1) insert overwrite table jointable select n.* from (select * from nullidtable where id is not null) n left join bigtable o on n.id = o.id;//先过滤掉空值,再进行join

          (2)有时虽然某个 key 为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在 join 的结果中,此时我们可以表 a 中 key 为空的字段赋一个随机的值,使得数据随机均匀地分不到不同的 reducer 上。

            insert overwrite table jointable select n.* from nullidtable n full join bigtable o on nvl(n.id,ra

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/582952
推荐阅读
相关标签
  

闽ICP备14008679号