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
)