2016-03-06 64 views
0

我有一個map reduce作業,它已經使用hive分區命名約定將記錄寫出到hdfs。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(碼= '1',頻道= 'A')

,它不會看到分區或記錄,因爲

SELECT * FROM TEST_1極限1產生0的結果。

如果我使用空位置,當我創建外部表,然後用 負載數據INPATH ... 然後它工作。但問題在於負載數據inpath的分區太多而無法正常工作。

有沒有辦法讓配置單元自動識別分區(沒有做插入查詢)?

回答

3

使用msck,它似乎工作。但我必須退出蜂巢會話,然後重新連接。

MSCK REPAIR TABLE test_1 
+0

天才!!謝謝,有這個確切的問題。對於未來的人來說,OP在這個問題上所做的手動修改命令是沒有必要的。只需按照慣例設置目錄,創建表格並運行此修復命令。 – Milimetric