-
分区表:
分区是表的部分列的集合
一般为频繁使用的数据建立分区,在查找分区中数据时不用扫描全表,有利于提高查找效率
Hive每个表有一个相应的目录存储数据,表中的的每一个分区对应表目录下的一个子目录,每个分区中的数据存储在对应子目录下的文件中
关键字是partitioned
分区表实际上是将表文件分成多个有标记的小文件方便查询
partitned by子句中定义的列是表中正式的列(分区列),但是数据文件内并不包含这些列(伪分列)
删除分区:alter table 表名 drop partition(dt=’20160301’);
增加分区:alter table 表名 add partition(dt=’20160301’); -
静态分区 : 指定列的值 ;由用户指定的数据所在的分区
建表
Create table student1(id int,name string)
Partitioned by(aca string,class string)
Row format delimited fields terminated by ‘,’;
导入数据
Load data local inpath ‘/bigdata/10.txt into table student1
partition(aca=’computer’,class=’034’); -
动态分区 : 不指定列的值 可以设置部分列为动态分区列
不允许主分区为动态分区列,而副分区为静态分区列
建表
Create table student(id int,name string)
Partitioned by(aca string,class string)
Row format delimited fields terminated by ‘,’;
设置模式为动态
Set hive.exec.dynamic.partition.mode=nonstrict;
Set hive.exec.dynamic.partition=true;
导入数据
Insert overwrite table student partition(aca,class)
Select id,name,aca,class from student1
Where class=’034’;
hive的静态分区和动态分区
最新推荐文章于 2023-09-04 17:52:04 发布