dairui130

导航

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'

posted on 2019-03-19 20:44  dairui130  阅读(2733)  评论(0编辑  收藏  举报