我是靠谱客的博主 忐忑月光,最近开发中收集的这篇文章主要介绍hive 连接查询优化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 连接查询优化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部