我有一个保存在ORC文件中的hive表,这是"create"命令中的定义:
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
我想从末尾删除一列,所以我尝试了"更改表 - 替换列"命令,我没有写列名 - 但收到此错误: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replacing columns cannot drop columns for table default.table. SerDe may be incompatible
有没有办法替换 Hive 中 ORC 表中的列?谷歌在这个问题上让我失望了......
谢谢!
根据hive教程,REPLACE COLUMNS命令只能对具有本机SerDe(DynamicSerDe,MetadataTypedColumnsetSerDe,LazySimpleSerDe和ColumnarSerDe)的表执行。
所以对于你的情况,创建一个包含必填列的新表。从旧表插入到新表中。将旧表重命名为其他表。将新表重命名为旧表。
谢谢。