2014-11-03 98 views
5

首先我創建由代碼和日期蜂房外部分區表

CREATE EXTERNAL TABLE IF NOT EXISTS XYZ 
(
ID STRING, 
SAL BIGINT, 
NAME STRING, 

) 
PARTITIONED BY (CODE INT,DATE STRING) 
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe' 
STORED AS 
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat" 
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat" 
LOCATION '/old_work/XYZ'; 

分區蜂巢外部表,然後我執行插入此表上的其他表

INSERT OVERWRITE TABLE XYZ PARTITION (CODE,DATE) 
SELECT 
* 
FROM TEMP_XYZ; 

和我服用後數據覆蓋統計配置單元中的記錄數 從XYZ選擇計數(*); 它顯示我1000個記錄有 然後我重命名或移動位置「/ old_work/XYZ」到「/ new_work/XYZ」

,然後我又下降了XYZ表和創建再次指向位置,以新的目錄 手段「/ new_work/XYZ」

CREATE EXTERNAL TABLE IF NOT EXISTS XYZ 
(
ID STRING, 
SAL BIGINT, 
NAME STRING, 

) 
PARTITIONED BY (CODE INT,DATE STRING) 
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe' 
STORED AS 
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat" 
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat" 
LOCATION '/new_work/XYZ'; 

但後來當我在蜂巢從XYZ表執行SELECT COUNT(*),它顯示了0個記錄, 我想我錯過了什麼,請幫我在這? ??

回答

5

您不必刪除該表並重新創建它的第二次:只要你移動

或重命名錶的外部HDFS位置,只是這樣做:

msck repair table <table_name> 

你的情況錯誤是因爲,配置單元Metastore沒有更新新路徑。

+0

爲什麼不更新呢?我正在看這個,看不出任何理由爲什麼這不起作用... – Avius 2017-04-02 11:33:20