hive 创建分区表
创建分区表的好处是查询时,不用全表扫描,查询时只要指定分区,就可查询分区下面的数据。
分区表可以是内部表,也可以是外部表。
建表格式
CREATE [EXTERNAL] TABLE par_test(
col_name data_type ...)
COMMENT 'This is the par_test table' 说明性文字
PARTITIONED BY(day STRING, hour STRING) 指定分区
[ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ] 指定分隔符
[LINES TERMINATED BY '\n'] 指定换行
[LOCATION '/user/hainiu/data/'] 指定目录位置
大写字母读起来感觉有点麻烦
建表格式
create[external] table 表名(
列名 数据类型 ...)
comment 'This is the par_test table' 说明性文字
partitioned by(分区字段1 STRING, 分区字段2 STRING) 指定分区
[row format delimited fields terminated by'\t' ] 指定分隔符
[lines terminated by '\n'] 指定换行
[location '/user/hainiu/data/'] 指定目录位置
添加单个partition 语法格式
在表中添加单个partition,相当于hdfs:'/……/表名/20141117/00'
alter table 分区表 add IF NOT EXISTS partition(分区字段='值',分区字段='值') location '指定分区在HDFS上目录结构';
添加多个partition 语法格式
在表中添加多个partition
相当于hdfs:'/……/表名/20141117/00'
相当于hdfs:'/……/表名/20141117/01'
alter table par_test add partition(day='20141117',hour='00') location '20141117/00' partition(day='20141117',hour='01') location '20141117/01';
查看表分区
show partitions tableName;
删除partition
alter table 表名 drop if exists partition(字段1='值1',字段2='值2');