我想从一个巨大的hive分区表中删除一列。想知道我该怎么做。下面是我试过的。
ddl地址:
CREATE TABLE xyz.test_change (a int, b int, c int);
alter命令:
ALTER TABLE xyz.test_change REPLACE COLUMNS (a int, b int);
错误:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replacing columns cannot drop columns for table xyz.test_change. SerDe may be incompatible
org.apache.hadoop.hive.ql.metadata.HiveException: Replacing columns cannot drop columns for table xyz.test_change. SerDe may be incompatible
1条答案
按热度按时间6g8kf2rb1#
REPLACE COLUMNS
只支持用本机serde替换列(DynamicSerDe, MetadataTypedColumnsetSerDe, LazySimpleSerDe and ColumnarSerDe)
.确保该表有一个上面定义的本机serde。
更多详情请参见:https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#languagemanualddl-添加/替换列