【踩坑实录】hive修改存储格式-orc格式修改为text

2022-11-13 13:21:28 浏览数 (1)

目录

一、orc格式修改为text

1.问题描述

2.表结构

3.报错内容

4.定位原因

5.解决办法

二、text格式修改为orc


一、orc格式修改为text

1.问题描述

一张orc格式的表,里面有几条数据,修改成text格式时报错。

代码语言:javascript复制
--执行语句
alter table 表名 set fileformat parquet textfile;
--设置 INPUTFORMAT、OUTPUTFORMAT、SERDE
ALTER TABLE 表名 SET FILEFORMAT INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe';

2.表结构

3.报错内容

Error while compiling statement: FAILED: Execution Error, return code 40000 from org.apache.hadoop.hive.ql.ddl.DDLTask. Changing file format (from ORC) is not supported for table

4.定位原因

这个方法只支持原先是text格式的表转为orc格式,那只是修改了表属性,但文件存储格式还是text的,查询时会出现解析错误。 

不支持从orc格式转为text格式。

5.解决办法

新建一张text格式表,将orc格式表数据插入进去,删除原表。

二、text格式修改为orc

代码语言:javascript复制
--改变格式
alter table 表名 set fileformat  orc;
--设置 INPUTFORMAT、OUTPUTFORMAT、SERDE
ALTER TABLE 表名 SET FILEFORMAT INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde';
--查看表结构
DESC formatted 表名;

0 人点赞