从配置单元分区的外部表中删除特定列

daupos2t  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(488)

我想从一个巨大的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
6g8kf2rb

6g8kf2rb1#

REPLACE COLUMNS 只支持用本机serde替换列( DynamicSerDe, MetadataTypedColumnsetSerDe, LazySimpleSerDe and ColumnarSerDe) .
确保该表有一个上面定义的本机serde。
更多详情请参见:https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#languagemanualddl-添加/替换列

相关问题