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

use*_*359 1 hive partition

我有一个映射缩减作业,它已经使用 hive 分区命名约定将记录写入 hdfs。

例如

/user/test/generated/code=1/channel=A
/user/test/generated/code=1/channel=B
Run Code Online (Sandbox Code Playgroud)

创建外部表后,它看不到分区。

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

即使使用 alter 命令

更改表 test_1 添加分区(代码 = '1',通道 = 'A')

,它看不到分区或记录,因为

select * from test_1 limit 1 产生 0 结果。

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

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

use*_*359 5

使用msck,似乎有效。但我必须退出配置单元会话,然后再次连接。

MSCK REPAIR TABLE test_1
Run Code Online (Sandbox Code Playgroud)