【问题标题】:IMPALA: Create new partitioned table based on unpartitioned tableIMPALA:基于未分区表创建新的分区表
【发布时间】:2018-08-15 00:59:52
【问题描述】:

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

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

here* 所述,id 应该是最后一列,但它是 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

【问题讨论】:

    标签: hdfs impala


    【解决方案1】:

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

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

    您将无法在 Impala 中以不同的方式执行此操作。在 Hive 中,您有一些选项可以选择所有列,但其他选项使用正则表达式。

    【讨论】:

    • 我会采用这个解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2015-11-07
    • 2022-08-03
    相关资源
    最近更新 更多