hive命令4

hive命令4

1.分区注意事项
(1)挑选一列作为分区键,其唯一值的个数应在较低值到中间值之间
(2)避免分区小于1GB(越大越好)
(3)当分区数量较多时,调整HiveServer2和Hive Metastore的内存
(4)当使用多列作为分区键时,对于每一个分区键列的组合都要创建一个子目录的
嵌套树。应该避免深入嵌套,因为这回导致太多的分区,进而使创建的文件非常小
(5)当使用hive流处理插入数据时,如果多个会话向相同的分区写入数据,那么就会导致锁闭
(6)可以修改某一分区表的模式,但是,一旦结构发生变化,就无法在已有分区中修改数据了
(7)如果要将数据并行插入到多个分区,应该将
hive.optimize.sort.dynamic.partition设置为true

2.对日期列进行高效分区
如:日期中按照"YYYY-MM-DD"格式比按照 年月日各自的值进行多深度分区在某些时候
更加高效。
使用单个字符串的优势:它允许使用更多的SQL运算符,例如:LIKE,IN,BETWEEN,
但是如果采用嵌套分区,就不太容易使用这些运算符了

3.案例
假设有表A,通过DataStamp字符串按照"YYYY-MM-DD"格式进行分区,SQL查询如下

查询选择特定日期:
select * from table A where DataStamp IN (‘2015-01-01’,‘2016-02-02’,‘2017-03-03’);

查询一年中所有的日期
select * from table A where DataStamp LIKE ‘2018-%’;

查询一年中特定月的所有日期
select * from table A where DataStamp LIKE ‘2019-02-%’;

查询所有以5开始/结束的日子
select * from table A where DataStamp LIKE ‘%-%-%5’;

查询2015年1月1日到2015年3月1日的所有日子
select * from table A where DataStamp BETWEEN ‘2015-01-01’ AND ‘2015-03-01’;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值