将分区添加到没有数据的hive表

时间:2016-11-29 17:10:32

标签: hadoop hive

我正在尝试创建一个与另一个表(已分区)具有相同列的配置单元表。我对同一个

使用以下查询
CREATE TABLE destTable STORED AS PARQUET AS select * from srcTable where 1=2;

显然我不能使用' PARTITIONED BY(col_name)'因为不能对destTable进行分区。但是我想提一下,在我向其添加数据之前,destTable应该被一个列(与srcTable相同)进行分区。

有办法吗?

1 个答案:

答案 0 :(得分:0)

正如您所提到的,destTable不能是分区表,因此无法直接执行此操作。此外,destTable不能是外部表。

在这种情况下,您需要创建一个临时的" staging_table" (未分区和Hive管理的表)来保存数据。

步骤1:将所有内容从srcTable传输到staging_table

步骤2:创建分区的destTable并执行:

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

希望这有帮助。