2016-11-29 64 views
0

我試圖創建與另一個表(分區)具有相同列的配置單元表。我用下面的查詢顯然,我不能用「PARTITIONED BY(COL_NAME)」,因爲destTable不能分割一樣將分區添加到不帶數據的配置單元表

CREATE TABLE destTable STORED AS PARQUET AS select * from srcTable where 1=2; 

。但是我想提一下,在向它添加數據之前,destTable應該被列分區(與srcTable相同)。

有沒有辦法做到這一點?

+0

能解釋清楚嗎? **顯然我不能使用'PARTITIONED BY(col_name)',因爲destTable一定不能分區。但是我想提一下,destTable應該被列分區** – mrsrinivas

回答

0

正如你所提到的,destTable不能是一個分區表,所以沒有辦法直接做到這一點。另外,destTable不能是外部表。

在這種情況下,您需要創建一個臨時「staging_table」(未分區和Hive管理的表)來保存數據。

第1步:從srcTable要轉移一切交給staging_table

第2步:創建一個分區destTable做:

INSERT OVERWRITE TABLE destTable PARTITION(xxxx) 
SELECT * FROM staging_table; 

希望這有助於。

相關問題