当前位置: 首页 > 知识库问答 >
问题:

配置单元-替换ORC表中的列

禄光霁
2023-03-14

我有一个配置单元表保存在ORC文件中,这是“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”命令,在这里我没有写列名--但是得到了这个错误:失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1。替换列不能删除表Default.table的列。SerDe可能不兼容

共有1个答案

劳英华
2023-03-14

根据配置单元教程,只能对具有本机SerDe(DynamicSerDe,MetadataTypedColumnsetSerDe,LazySimpleSerDe和ColumnSerde)的表执行REPLACE COLUMNS命令。

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

多谢了。

 类似资料:
  • 我有一个Hive表,它的数据存储为ORC。我在某些字段中写入空值(空白,‘“”),但有时当我对该表运行select查询时,空字符串列在查询结果中显示为NULL。我想看看我输入的空值,这怎么可能?

  • 我有一些困难,以确保我利用已排序的数据在一个配置单元表。(使用ORC文件格式) 我知道我们可以通过在create DDL中声明子句来影响数据从配置单元表中读取的方式。 这意味着每次查询该表时,数据将通过在各个映射器之间分发,然后对其进行排序。 我的问题是: 我不希望数据被拆分为文件(桶),因为卷不是那么多,我会保留小文件。 但是,我确实想利用排序插入。 我真的需要在create DLL语句中使用吗

  • 我已经从Map R集群复制了所有orc文件,并遵循了相同的文件夹结构 创建了位置为#1的orc格式表 然后执行此命令“msck REPAIR TABLE<>” 上面的步骤通过时没有出错,但当我查询分区时,作业失败,出现以下错误 有人能告诉我,我们可以直接从ORC文件创建配置单元ORC分区表吗? 我的存储是蔚蓝数据湖。

  • 我创建了一个兽人蜂巢表,如下所示: 但是在spark jobs控制台中:它显示了与上述查询跳过的阶段(1)相关的一个作业--spark JDBC服务器查询

  • 我正在尝试在ORC文件上创建外部配置单元表。 但当我试图在创建的表上执行select操作时,会出现以下错误: 有什么建议吗??