hive 修复分区、添加二级分区

我们在之前的文章中,介绍了二级分区,混合分区,静态分区,动态分区的区别和建表。

今天我们聊下,当我们建好分区表。并且通过程序在表的分区目录(location)下,写入了文件。

如何在hive中查询到插入的分区数据。

假如我们直接查表,会发现因为没有在表的元数据中加入新增的分区信息,导致查不到数据。

这时,

可以通过hive修复分区的sql语句,自动修复hive的分区

msck repair table table_name;

或手动增加分区

alter table add partition 'province = zhejiang';

但是,当我们建了多级分区,如下,

CREATE EXTERNAL TABLE `ods.employee`(
`name` string,
`sex` string,
`age` int
)
PARTITIONED BY (
`province` string,
`city` string)

使用hive提供的修复分区语句,会报如下的错误:

Logging initialized using configuration in file:/usr/local/service/hive/conf/hive-log4j2.properties Async: false
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

这时,只能通过手动的方式,增加分区了,并且要指定分区的hdfs路径:

alter table add partition ('province=zhejiang,city=hangzhou') location 'hdfs://data/province/province=zhejiang/city=hangzhou'
上一篇:闲聊DOS命令


下一篇:3D打印技术的学习