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');

作者:小马哥_编程 
原文:https://blog.csdn.net/xiaomage510/article/details/82669805 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值