如何创建从一个impala表到另一个impala表的分区

5fjcxozz  于 2021-06-26  发布在  Impala
关注(0)|答案(3)|浏览(1097)

我想在我们的数据库中克隆一个名为'blah'的impala表以进行测试(这样我就不会意外地删除一些我不应该删除的内容)。然而,表'blah'有分区,我运行的命令似乎没有起到作用。有人能告诉我在新表中自动创建/模拟分区的技巧吗?或者我需要在新表中手动创建分区吗?
我使用的命令是:

CREATE TABLE blah_copy LIKE blah
INSERT INTO TABLE blah_copy SELECT * FROM blah

当我运行时,它看起来会为我创建表,因为它们的列数相同

desc blah
desc blah_copy

但是,当我尝试复制数据(上面的insert语句)时,它会告诉我

ERROR: AnalysisException: Not enough partition columns mentioned in query. Missing columns are: www, xxx, yyy, zzz.

查看cloudera文档,它说:
如果对原始表进行分区,则新表将继承相同的分区键列。因为新表最初是空的,所以它不会继承原始表中存在的实际分区。要在新表中创建分区,请插入数据或发出alter table。。。添加分区语句。
所以这就是我现在的处境。提前谢谢你能给我的任何帮助。

cidc1ykv

cidc1ykv1#

你必须添加一个 PARTITION (column) 插入查询

INSERT INTO TABLE blah_copy PARTITION (column) 
SELECT * FROM blah
093gszye

093gszye2#

设置hive.exec.dynamic.partition.mode=nonstrict
创建像blah一样的表格blah\u copy;
insert into table blah\u copy partition(wname,xname,yname,zname)从blah中选择*;

n7taea2i

n7taea2i3#

如果你有最新的 Impala 版本,你可以做

create table blah_copy partitioned by (column_x, column_y, column_z) as select * from blah;

相关问题