1. Hive分区表Partition和Bucket,为了提升查询效率,前者是粗粒度的划分,后者是细粒度的划分。
建表语句中使用partitioned by指定分区字段
分区表有静态分区和动态分区两种。若分区的值是确定的,那么称为静态分区字段,反之,若分区的值是非确定的,那么称之为动态分区字段。默认是采用静态分区。
2. 静态分区
应用场景1
每天有很多不同的商店各自会产生成百上千的销售记录,当天的数据当天加载。那么这是一个最简单的示例,每天产生的这些销售记录中,某些客户的销售额如何插入到已有的数仓的表中去。日期是确定的。create external table if not exists sp_trans(cust_no string comment '客户号',shop_no string comment '商铺号',trans_amt double comment '交易额',trans_date string comment '交易日期',etl_ts timestamp comment 'etl时间戳')partitioned by (dt string)row format delimited fields terminated by ',';/* 将数据插入到某一个确定的日起分区中去 */insert into sp_trans partition (dt='2016-01-13')select * from transaction where trans_date='2016-01-13';
应用场景2
加入一个分区字段,商铺号。分区字段之间具有层级关系。create external table if not exists sp_trans2(cust_no s

本文详细介绍了Hive中的分区表概念,包括静态分区和动态分区的创建、插入数据、应用场景及修改分区的方法。通过分区可以提高查询效率,静态分区适用于值确定的情况,动态分区适用于值不确定的情况,但在使用动态分区时需要注意设置最大动态分区数量。
最低0.47元/天 解锁文章
1206

被折叠的 条评论
为什么被折叠?



