概述
1.每个join都会启动一个mapreduce
如果连接字段是同一个字段,则会进入同一个reduce
2.hive会默认最后一个表为数据量最大的表,所以会将前面的表进行缓存
所以进行连接查询的时候,将表从小到大连接
3.如果查询中不想将大表放到最后,可以使用查询暗示,指定哪张表示最大的
select /* +streamtable(c) */ c.id,c.name
from custorm c join order o on o.cid=c.id
内连接
直接join,只有复核连接条件的才会被查询出
左外连接
left outer join,左边的记录会全部显示
右外连接
right outer join 右边的记录会全部显示
全外连接
full outer join 笛卡尔积
左半连接
只要右表有符合条件的数据,就会返回左边的数据,不会全表扫描
LEFT SEMI JOIN (左半连接)是 IN/EXISTS 子查询的一种更高效的实现。
查询结果不能出现右表字段
select * from a where a.id in (select id from b ) 可以改为 select * from a left semi join b on a.id = b.in
最后
以上就是忐忑月光为你收集整理的hive 连接查询优化的全部内容,希望文章能够帮你解决hive 连接查询优化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复