【问题标题】:Hive - Replace columns in ORC tableHive - 替换 ORC 表中的列
【发布时间】:2018-04-03 00:18:24
【问题描述】:

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    谢谢。

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多