HIVE SQL数据倾斜情况以及解决办法

本文主要探讨了HIVE SQL中JOIN和GROUP BY操作出现数据倾斜的问题,包括空值、数据量不平衡、JOIN类型等。针对这些问题,提出了通过去重、map join、使用approx_count_distinct函数等解决策略,并提供了查看数据倾斜任务的方法。
摘要由CSDN通过智能技术生成

一、JOIN 数据倾斜

1、空值问题
select t1.id
from table_a t1
left join table_b t2
on t1.id = t2.id

如果主表的关联字段 t1.id 存在过多的NULL值,那么可能会造成数据倾斜
解决办法如下 (将NULL赋 随机值)

select t1.id
from table_a t1
left join table_b t2
on nvl(t1.id, rand()) = t2.id
2、如果其中一个表数据量不大,可以用 map join 方式解决
select
  /*+ MAPJOIN(t1)*/
  t1.id
from table_a t1
left join table_b t2
on t1.id = t2.id

PS. map join 不起作用时,可参考文章

数据倾斜是指在Hive SQL数据处理过程中,某些数据值或键值的分布不均匀,导致一部分任务的执行时间明显长于其他任务的现象。数据倾斜的原因包括键值分布不均匀、业务数据本身的特性、建表不完善以及某些HQL语句本身存在数据倾斜等。对于数据倾斜问题,可以采取不同的解决方案,具体取决于数据倾斜的类型。例如,如果是由空值引起的数据倾斜,可以通过过滤掉空值或者对空值进行特殊处理来解决。对于Hive数据库开发中遇到的数据倾斜问题,需要对数据倾斜进行定义并了解产生的原因,然后根据具体情况采取相应的解决方案来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [hive数据倾斜(超详细)](https://blog.csdn.net/wind96/article/details/127696043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Hive数据倾斜的原因以及常用解决方案](https://blog.csdn.net/weixin_42011858/article/details/128964757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值