alter table /在hive中的非本机表中添加列

时间:2018-03-21 07:09:30

标签: hadoop hive druid external-tables

我创建了一个带有存储处理程序的hive表,现在我想在该表中添加一列,但它给出了以下错误:

[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

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

这是一个链接https://cwiki.apache.org/confluence/display/Hive/StorageHandlers

有一个JIRA增强功能案例也是用Apache开放的。 https://issues.apache.org/jira/browse/HIVE-1240

对于前者,我正在使用德鲁伊存储处理程序。

我使用以下方法创建了一个配置单元表

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);

通过上述方法,我收到了错误。

有没有其他方法可以在hive中的非本机表中添加列而无需重新创建它?

1 个答案:

答案 0 :(得分:1)

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

可以使用Hive中的ALTER table DDL将列添加到druid表中。 ALTER TABLE ADD COLUMNS (col_name data_type)

无需指定分区规范,因为它们是由德鲁伊支持的配置单元表,并且分区/存储由德鲁伊维护。