【大数据开发】Hive总结

持续更新ing

Hive总结
1.left semi join:当join了多张表的时候,把semi join 放在最后面去,因为semi join右边的表只能用在它后面第一个on中,并且它查询出来的表是左边做完内连接之后的数据,不会再包含右表的数据。

2.distinct和group by都有去重的效果

3.让hive查询快一些
set hive.exec.mode.local.auto=true;
set hive.auto.convert.join=true;

4.hive中group by如果包含两个以及以上的字段,必须要全部字段都相同才能分为同一组,否则是不会分为同一组的

5.select优先级会高于order by,故窗口函数的排序要优先于order by,所以如果外面加了order by,那么窗口函数的排序失效
在这里插入图片描述
在这里插入图片描述

6.若内层查询用到了窗口函数,但是外层查询没有使用到内层查询中的窗口函数,则会导致内层查询中窗口函数所做的操作都会失效(包括窗口函数,分区,排序等)
内层查询如下
在这里插入图片描述
外层查询用到了窗口函数 row_number
在这里插入图片描述
外层查询没有用到窗口函数row_number,则会导致窗口函数排序失效
在这里插入图片描述
7.优先级:group by>select(窗口函数在select里面)>distinct,故在使用了窗口函数之后想去重应当使用distinct,而不是group by

8.join on中的on条件可以是=,>, <, <>, !=, IS NOT NULL, IS NULL
但是不能是OR,只能是AND
下图是测试条件

在这里插入图片描述
在这里插入图片描述
9.hive连接(全连接,左连接,右连接),先匹配on条件,若on条件没有匹配上,执行join则会产生null值

执行优先级on > join

当没有添加on条件时,right join、left join和join的效果是一样的

10.分区和分桶
分区是指分文件夹,多级分区指的是分多级的文件夹
分桶指的是将文件按照某种规则分成多个文件,美其名曰桶

11.复杂数据结构Array
建立含有Array类型的表的时候,不仅要指明字段之间的分隔符是什么(row format delimited fields terminated by ‘\t’),还要指明Array之间的元素分隔符是什么(collection items terminated by ‘,’),注意含有Array数据类型的表建立起来以后的表字段类型是下面这样的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值