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

hyrbngr7  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(713)

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

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

如这里所述*,id应该是最后一列,但它是旧表中的第一列。旧的表包含很多列,所以我不想列出所有的列。我能做什么?


* -- 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
rjjhvcjd

rjjhvcjd1#

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

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

在 Impala ,你将无法用不同的方式来做。在hive中,您有一些选项可以选择所有列,但其他选项使用正则表达式。

相关问题