【问题标题】:Add partition to hive table with no data将分区添加到没有数据的配置单元表
【发布时间】:2016-11-29 17:10:32
【问题描述】:

我正在尝试创建一个与另一个表(分区)具有相同列的配置单元表。我使用以下查询相同

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

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

有没有办法做到这一点?

【问题讨论】:

  • 能解释清楚吗? 显然我不能使用“PARTITIONED BY(col_name)”,因为不能对 destTable 进行分区。但我想提一下,destTable 应该按列分区

标签: hadoop hive


【解决方案1】:

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

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

第 1 步:将所有内容从 srcTable 转移到 staging_table

第 2 步:创建一个分区的 destTable 并执行:

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2020-12-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多