我有一个map reduce作业,已经使用hive分区命名约定将记录写入hdfs。
例如
/user/test/generated/code=1/channel=A
/user/test/generated/code=1/channel=B
创建外部表后,它看不到分区。
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产生0结果。
如果我在创建外部表时使用空位置,然后使用 在路径中加载数据... 然后它工作。但问题是,路径中的加载数据有太多分区无法工作。
有没有办法让hive自动识别分区(不进行插入查询)?
答案 0 :(得分:4)
使用msck,似乎工作正常。但我不得不退出蜂巢会话,再次连接。
MSCK REPAIR TABLE test_1