Hive 外部 table 无法读取已分区的 hdfs 目录

Hive external table is unable to read already partitioned hdfs directory

我有一个 map reduce 作业,它已经使用配置单元分区命名约定将记录写出到 hdfs。

例如

/user/test/generated/code=1/channel=A
/user/test/generated/code=1/channel=B

在我创建外部 table 后,它没有看到分区。

 create external table test_1 ( id string, name string ) partitioned by
 (code string, channel string) STORED AS PARQUET LOCATION
 '/user/test/generated'

即使使用 alter 命令

alter table test_1 ADD PARTITION (code = '1', channel = 'A')

,它没有看到分区或记录, 因为

select * from test_1 limit 1 produces 0 result.

如果我在创建外部 table 时使用空位置,然后使用 在路径中加载数据... 然后就可以了。但问题是分区太多,路径中的加载数据无法工作。

有没有办法让hive自动识别分区(不做插入查询)?

使用 msck,似乎可以正常工作。但是我不得不退出配置单元会话,然后重新连接。

MSCK REPAIR TABLE test_1