初次 Hive sql 的join调优

业务需要,要在Hive里把两个表关联起来,所以需要用到join语句,然后第一次随手写了join,直接跑。。然后跑了6个小时没跑完,被管理员取消了。。于是想办法改进

首先想的是不直接join两个表的所有属性,而是分别找到各自需要的属性,用各自的where条件限制,用子嵌套语句完成,最后在group by一下。

试着跑了一下,跑了很久很久。。。。。无法忍耐!还要再想办法

 

查看一下表1里一个分区的信息(有四个字段划分分区)

58亿条!!并且有42列!!怪不得跑不动!!

表2:

5万多条,相比之下非常非常小。

很显然数据倾斜非常严重,去找解决方法,大表join小表,很容易想到使用map join,在map端先做join,可以大大减轻reduce端的压力。

set hive.auto.convert.join=true;

设置使用map join ,再跑一次

十几分钟结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值