hive两个大表join操作


https://blog.csdn.net/qq_42189083/article/details/82177689

(1)第一次优化,on 字段准换成类型相同

(2)第二次优化,on 后面字段的缺失率很高(为空、字段长度为零、字段填充了非整数),关联字段为无效字段,则不需要关联

(3)虽然设置了左表关联字段为空不去关联右表,但是这样做,左表中未关联的记录(字段为空)将会全部聚集在一个reduce中进行处理,体现为reduce进度长时间处在99%。 换一种思路,解决办法的突破点就在于如何把左表的未关联记录的key尽可能打散,因此可以这么做:若左表关联字段无效(为空、字段长度为零、字段填充了非整数),则在关联前将左表关联字段设置为一个随机数,再去关联右表,这么做的目的是即使是左表的未关联记录,它的key也分布得十分均匀。

from trackinfo a 
left outer join pm_info b 
on ( 
case when (a.ext_field7 is not null 
and length(a.ext_field7) > 0 
and a.ext_field7 rlike ‘^[0-9]+$’) 
then 
cast(a.ext_field7 as bigint) 
else 
cast(ceiling(rand() * -65535) as bigint) 
end = b.id 
)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM