2016-11-29 66 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; 

希望这有助于。

相关问题