IMPALA:基于未分区表创建新的分区表

时间:2018-08-15 00:59:52

标签: hdfs impala

我想基于另一个未分区表创建一个新的分区表。 新表应按旧表的一列进行分区。然后,我想将所有旧数据加载到新表中。

CREATE TABLE new_table PARTITIONED BY (id) STORED AS PARQUET AS SELECT * FROM old_table

类似于here *,ID应该是LAST列,但它是old_table中的第一列。 old_table包含很多列,因此我不想列出所有列。我该怎么办?

    *-- We expect this CTAS to fail because non-key column S
-- comes after key columns YEAR and MONTH in the select list.
create table partitions_maybe partitioned by (year, month)
  as select year, month, s from partitions_no;
ERROR: AnalysisException: Partition column name mismatch: year != month

1 个答案:

答案 0 :(得分:1)

如果您不介意在记录级别复制列信息,则可以这样做

CREATE TABLE new_table PARTITIONED BY (id_partition) STORED AS PARQUET AS SELECT *, id as id_partition FROM old_table

在Impala中,您将无法以其他方式进行操作。在Hive中,您可以使用某些选项选择所有列,而其他选项则使用正则表达式。