0

我有一个保存在 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'

我想从最后删除一列,所以我尝试了“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 表中的列?谷歌在这个问题上让我失望了......

谢谢!

4

1 回答 1

0

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

因此,对于您的情况,请创建一个包含所需列的新表。从旧表插入新表。将旧表重命名为其他表。将新表重命名为旧表。

谢谢。

于 2017-10-23T06:15:15.203 回答