IMPALA:基于未分区表创建新的分区表
Posted
技术标签:
【中文标题】IMPALA:基于未分区表创建新的分区表【英文标题】:IMPALA: Create new partitioned table based on unpartitioned table 【发布时间】: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
【问题讨论】:
【参考方案1】:如果您不介意在记录级别复制列信息,您可以这样做
CREATE TABLE new_table PARTITIONED BY (id_partition) STORED AS PARQUET AS SELECT *, id as id_partition FROM old_table
您将无法在 Impala 中以不同的方式执行此操作。在 Hive 中,您有一些选项可以选择所有列,但其他选项使用正则表达式。
【讨论】:
我会采用这个解决方案。谢谢!以上是关于IMPALA:基于未分区表创建新的分区表的主要内容,如果未能解决你的问题,请参考以下文章