分区表说明
分区表实际上就是 对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录
,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多.
分区表的操作
创建分区表
语法
partition by (字段 类型)
# 创分区表语句 create table hive_db( id int, name string ) partitioned by (mouth string) row format delimited fields terminated by '\t'; # 查看分区表格式,发现定义的分区 也是一个字段 hive> desc hive_db; OK id int name string mouth string # 一个字段 # Partition Information # col_name data_type comment mouth string Time taken: 0.106 seconds, Fetched: 8 row(s)
添加分区
一次添加一个分区
hive> alter table hive_db add partition(mouth="20200109");
OK
Time taken: 0.356 seconds
一次添加多个分区 注意
空格
分隔
hive> alter table hive_db add partition(mouth="20200111") partition(mouth="20200110");
OK
Time taken: 0.356 seconds
删除分区
一次删除一个分区
hive> alter table hive_db drop partition(mouth="202001407");
Dropped the partition mouth=202001407
OK
Time taken: 0.601 seconds
一次删除多个分区 注意
逗号
分隔
hive> alter table hive_db drop partition(mouth="20200110"),partition(mouth="20200111");
Dropped the partition mouth=20200110
Dropped the partition mouth=20200111
OK
Time taken: 0.371 seconds
加载数据到分区表
# 加载 loal data local inpath '/root/student.txt' into table hive_db partitionh(mouth=20200107); # 查看内容 发现分区也显示出来了 hive> select * from hive_db; OK 1 Bob 202001407 2 Black 202001407 3 Jeck 202001407 Time taken: 0.103 seconds, Fetched: 3 row(s)
查看HDFS上的 Hive 分区表数据
查看分区数据
查询全部数据
# 会把多个分区数据一起查询出来 hive> select * from hive_db; OK 1 Bob 202001407 2 Black 202001407 3 Jeck 202001407 1 Bob 202001408 2 Black 202001408 3 Jeck 202001408 Time taken: 0.116 seconds, Fetched: 6 row(s)
查询单个分区的数据
hive> select * from hive_db where mouth=202001407; OK 1 Bob 202001407 2 Black 202001407 3 Jeck 202001407 Time taken: 0.376 seconds, Fetched: 3 row(s)
二级分区表
二级分区表就是在一级分区表的基础上,在加一个字段
create table stu( id int, name string ) partitioned by(mouth string,day string) row format delimited fields terminated by '\t';
导入数据到二级分区表
语法
load data local inpath '文件' into table stu partition(mouth="01",day="07");
partition( ) 里面是对应的分区字段
hive> load data local inpath '/root/student.txt' into table stu partition(mouth="01",day="07"); Loading data to table test.stu partition (mouth=01, day=07) Partition test.stu{mouth=01, day=07} stats: [numFiles=1, numRows=0, totalSize=21, rawDataSize=0] OK Time taken: 0.554 seconds
扩展
三级分区、四级分区... 都是一样的道理,但很没有必要
版权声明:《 Hive 的分区表相关操作 》为明妃原创文章,转载请注明出处!
最后编辑:2020-1-7 07:01:56