分区目的
-分区主要用于提高性能
-分区列的值将表划分为一个个的文件夹
-查询时语法使用"分区"列和常规列类似
-查询时Hive会只从指定分区查询数据,提高查询效率
-分为静态分区和动态分区
分区的创建
Hive创建分区时,是通过partitioned by关键字进行创建,要注意的是这个关键字定义的列是表中正式的列,不能与表中其他列名重复,他们是目录(分区)名,目录下放的才是数据。分区字段不能与表中其他字段重复,否则会报错
1.创建建表时候不管动态还是静态分区
create table userinfos(
userid string,
age string,
birthday string)
partitioned by (sex string)
row format delimited fields terminated by ','
stored as textfile;
2.执行load 装载数据
(其实load操作相当于把文件移动到HDFS的Hive目录下)
这种方式不合理直接忽略了性别,在查的时候强行改变该列的值但是原数据没有改变
load data local inpath '/opt/datas/user.csv' overwrite into table userinfos partition (sex='male');
3.查看表结构,查询分区表的数据
desc userinfos;
select * from userinfos;
4.静态分区:
指定分区就忽略该字段强行为分区值
场景:增量表
create table ods_users(
userid string,
username string,
birthday string