从 Hive 分区外部表中删除特定列
Posted
技术标签:
【中文标题】从 Hive 分区外部表中删除特定列【英文标题】:Remove specific column from Hive Partitioned external table 【发布时间】:2018-10-31 22:37:48 【问题描述】:我想从一个巨大的 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】:REPLACE COLUMNS
仅支持使用原生 SerDe (DynamicSerDe, MetadataTypedColumnsetSerDe, LazySimpleSerDe and ColumnarSerDe)
.
确保该表具有上面定义的本机 Serde 之一。
您可以在此处参考更多详细信息:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Add/ReplaceColumns
【讨论】:
以上是关于从 Hive 分区外部表中删除特定列的主要内容,如果未能解决你的问题,请参考以下文章