栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive的分区

Hive的分区

Hive有分区表和分桶表这两个概念。

分区表 基本操作

Hive的分区是指将存储的数据进一步细分,相当于一个表的分目录。一个表内有多个分区表。

create table table_name (column_name column_type, ...) partitioned by (partition_column partition_type)

//例如	按天进行分区
create table dept_partition(deptno int, dname string, loc string)
partitioned by (day string)
row format delimited fields terminated by 't';

注意:分区字段不能是表中已经存在的数据,可以将分区字段看作表的伪列。

load data时指定分区
load data inpath "/data/test.txt" into table dept_partition partition(day='20211110');


我们再加载数据之后可以看到,在该表下还有一个文件夹,文件夹的名称和分区名称对应,分区文件夹下是具体的数据文件。

查询分区数据 单分区查询
select * from dept_partition where day='20211110';

当我们的限制条件用的是分区的时候,hive只会在该分区的文件夹下的数据查询,不会到其他分区去查询目标。

多分区联合查询

多分区联合查询使用union或者or来实现。

//union
select * from dept_partition where day='20211110'
union
select * from dept_partition where day='20211109'

//or
select * from dept_partition where day='20211110' or day='20211109'
增加分区

创建分区使用alter add增加。

//创建单个分区
alter table dept_partition add partition(day='20200404');

//创建多个分区
alter table dept_partition add partition(day='20200405')  partition(day='20200406');

注意多个分区之间是用空格隔开。

删除分区

删除分区用alter drop删除。

//删除单个分区
alter table dept_partition drop partition (day='20200406');

//删除多个分区
alter table dept_partition drop partition(day='20200404'), partition(day='20200405');

注意多个分区之间是用逗号隔开。

查看分区
show partitions dept_partition;
二级分区

二级分区就是对一级分区内再做一次分区。

 create table dept_partition2(
 deptno int, dname string, loc string
 )
 partitioned by (day string, hour string)
 row format delimited fields terminated by 't';
动态分区

上述的分区都是直接输入分区值,这属于静态分区。Hive可以根据数据里的具体列进行分区,到哪个分区取决于该列的数据,这样就可以实现动态分区。

使用动态分区需要设置为非严格模式(严格模式只能开静态分区)。

hive.exec.dynamic.partition.mode=nonstrict

动态分区使用insert实现。下面的代码就是通过了数据中的loc实现分区,这就是动态分区。

insert into table dept_partition_dy partition(loc) 
select deptno, dname, loc from dept;

在hive3.0的版本中,会将select的最后一个字段当作分区字段,同时不需要设置为非严格模式。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/460319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号