我创建了一个带有存储处理程序的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中的非本机表中添加列而无需重新创建它?
答案 0 :(得分:1)
修补程序在Hortonworks的HDP 2.5+中可用。在ALTER语句中添加了对ADD列的支持。
可以使用Hive中的ALTER table DDL将列添加到druid表中。
ALTER TABLE ADD COLUMNS (col_name data_type)
无需指定分区规范,因为它们是由德鲁伊支持的配置单元表,并且分区/存储由德鲁伊维护。