Hive 分区表和二级分区表的基本操作

Hive分区就是在HDFS上创建独立的文件夹,该文件夹下是该分区的所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择来查询所需要的指定分区,这样的查询效率会提高很多。

1、引入分区表

最终呈现的效果就是在HDFS上按照分区的目录存储文件:

/user/hive/warehose/log/201801/01/dept.log

/user/hive/warehose/log/201801/02/dept.log

/user/hive/warehose/log/201801/03/dept.log

2、创建分区表

 创建分区的关键语句是partitioned by (分区名 类型):

create table dept_partition(
 deptno  int,dname  string,loc  string
)
partitioned by (month string)
row format delimited fields terminated by '\t';

3、加载数据到分区表中

load data local inpath '/opt/module/datas/dept.txt' into table dept_partition partition(month='201801');

4、查询分区表中的数据

单分区查询:

select * from dept_partition where month='201801';

多分区联合查询:

select * from dept_partition where month='201801'
union
select * from dept_partition where month='201802'
union
select * from dept_partition where month='201803';

5、增加分区

创建单个分区:

alter table dept_partition add partition(month='201802');

同时创建多个分区:

alter table dept_partition add partition('201803') partition(month='201804');

6、查看分区

show partitions dept_partition;

7、删除分区

删除单个分区:alter table dept_partition drop partition(month='201801');

同时删除多个分区:alter table dept_partition drop partition(month='201802'),partition(month='201803');

8、查看分区表的结构

desc formatted dept_partition;

9、创建二级分区表

create table dept_partition2(
 deptno  int,dname  string,loc  string
)
partitioned by (month string,day string)
row format delimited fields terminated by '\t';

10、向二级分区表中导入数据

load data local inpath '/opt/module/datas/dept.txt' into table dept_partition2 partition(month='201809',day='21');

11、查询二级分区表的数据

select * from dept_partition2 where month='201801' and day='21';

Hive 分区数据关联的三种方式

1、上传完分区数据后修复

在hive命令行中直接将文件上传到HDFS上

//HDFS上创建目录
hive(default)> dfs -mkdir -p /user/hive/warehose/dept_partition2/month=201801/day=01;

//HDFS上直接上传文件
hive(default)> dfs -put /opt/module/datas/dept.txt /user/hive/warehose/dept_partition2/month=201801/day=01;

//修复数据关联(如果不修复就没有查询结果)
hive(default)> msck repair dept_partition2;

2、上传完数据后添加分区

//创建目录
hive(default)> dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201804/day=02;

//上传数据到HDFS上
hive(default)> dfs -put /opt/module/datas/dept.txt /user/hive/warehouse/dept_partition2/month=201804/day=02;

//增加分区
hive(default)> alter table dept_partition2 add partition(month='201804',day='02');

3、上传数据后load数据到分区

//创建目录
hive(default)> dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201804/day=03;


//load数据到分区
hive(default)> load data local inpath '/opt/module/datas/dept.txt' into table dept_partition2 partition(month='201804',day='03');

 

你可能感兴趣的:(大数据,hadoop,Hive)