海江  

https://blog.csdn.net/jiangsanfeng1111/article/details/52847044 -- 高级优化

 

使用各种函数
hive>show functions;//查看所有函数
hive>describe function explode;//查看函数的使用方法


https://www.csdn.net/article/2015-01-13/2823530

Hive中小表与大表关联(join)的性能分析
写在关联左侧的表每有1条重复的关联键时底层就会多1次运算处理。
“把重复关联键少的表放在join前面做关联可以提高join的效率。”

https://blog.csdn.net/wisgood/article/details/17739177

 

设置fetch task

   fetch task 为执行hive时,不用执行MapReduce,如select * from emp;

set hive.fetch.task.conversion=more;


mapjoin

使用mapjoin将小表放入内存,在map端和大表逐一匹配,从而省去reduce。

set hive.auto.convert.join=true; 自动分配mapjoin


Hive数据倾斜(大表join大表)

 

https://blog.csdn.net/yeweiouyang/article/details/45665727

1 关联字段类型要一致
2 若左表关联字段无效(为空、字段长度为零、字段填充了非整数),
则在关联前将左表关联字段设置为一个随机数,再去关联右表,
这么做的目的是即使是左表的未关联记录,它的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
)

posted on 2018-07-25 15:47  海江  阅读(198)  评论(0)    收藏  举报