Impala 添加具有默认值的列

Impala add column with default value

我想在现有的 impala table(和视图)中添加一个具有默认值的列(以便现有的行也有一个值)。该列不应允许空值。

ALTER TABLE dbName.tblName ADD COLUMNS (id STRING NOT NULL '-1')

我浏览了文档,但找不到专门执行此操作的示例。我如何在 Impala 中执行此操作? Hue underlines/does 无法识别 NOT NULL 命令

您是否将 Kudu 用作 table 的存储层?因为如果不是,那么根据Impala docs,

Note: Impala only allows PRIMARY KEY clauses and NOT NULL constraints on columns for Kudu tables. These constraints are enforced on the Kudu side.

...

For non-Kudu tables, Impala allows any column to contain NULL values, because it is not practical to enforce a "not null" constraint on HDFS data files that could be prepared using external tools and ETL processes.

Impala的ALTER TABLE语法也不支持指定默认列值(一般来说,非Kudu)。

使用Impala你可以尝试如下

添加列


ALTER TABLE dbName.tblName ADD COLUMNS(id STRING);

添加该列后,您可以使用相同的 table

如下所示填写该列
INSERT OVERWRITE dbName.tblName SELECT col1,...,coln, '-1' FROM dbName.tblName;

其中 col1,...,coln 是 add columns 命令之前的前几列,'-1' 是填充新列。