Hive - 替换ORC表中的列

时间:2017-10-22 09:40:56

标签: hadoop hive alter-table orc hive-serde

我有一个保存在ORC文件中的配置单元表,这是"创建"中的定义。命令:

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'

我想从最后删除一列,所以我尝试了#34; Alter Table - Replace Columns"命令,我没有写出列名 - 但是出现了这个错误: 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表中的列? 谷歌在这个问题上让我失望了....

谢谢!

1 个答案:

答案 0 :(得分:0)

根据hive教程,REPLACE COLUMNS命令只能用于具有本机SerDe(DynamicSerDe,MetadataTypedColumnsetSerDe,LazySimpleSerDe和ColumnarSerDe)的表。

所以对你的情况来说, 创建一个包含必需列的新表。 从旧表插入新表。 将旧表重命名为其他表。 将新表重命名为旧表。

感谢。