在配置单元中更改非本机 table 中的 table/add 列

alter table/add columns in non native table in hive

我创建了一个带有存储处理程序的配置单元 table,现在我想向其中添加一列 table 但它给我以下错误:

[Code: 10134, SQL State: 42000]  Error while compiling statement: FAILED: 
SemanticException [Error 10134]: ALTER TABLE can only be used for [ADDPROPS, 
DROPPROPS] to a non-native table

根据配置单元文档,您使用存储处理程序创建的任何配置单元 table 都是非本机的 table。

这是一个linkhttps://cwiki.apache.org/confluence/display/Hive/StorageHandlers

有一个用于增强的 JIRA 案例与 Apache 一起开放。 https://issues.apache.org/jira/browse/HIVE-1240

例如,我使用的是 Druid Storage Handler。

我创建了一个配置单元 table 使用:

CREATE TABLE druid_table_1
(`__time` TIMESTAMP, `dimension1` STRING, `metric1` int)
STORED BY 'org.apache.hadoop.hive.druid.DruidStorageHandler';

然后我尝试添加一列:

ALTER TABLE druid_table_1 ADD COLUMNS (`dimension2` STRING);

用上面的方法我得到一个错误。

是否有任何其他方法可以在不重新创建列的情况下将列添加到配置单元中的非本机 table?

修补程序可用于 Hortonworks 的 HDP 2.5+。在 ALTER 语句中添加了对 ADD 列的支持。

可以在 hive 中使用 ALTER table DDL 将列添加到德鲁伊 table 中。 ALTER TABLE ADD COLUMNS (col_name data_type)

无需指定分区规范,因为这些是德鲁伊支持的配置单元 table 并且 partition/storage 由德鲁伊维护。