温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1
问题重现
当我们在使用ORC文件格式创建Hive表,并且对Hive表的schema进行更改后,然后进行如insert into…select或insert overwrite … select会报错,以下具体看看报错。
1.首先我们创建一张ORC格式的Hive表,从插入一行数据。
CREATE TABLE orc_test(
s1 date,
s2 string,
s3 string
)
STORED AS ORC
LOCATION '/fayson/orc_test';
insert into orc_test values('2015-12-18','25','11111');
select * from orc_test;
(可左右滑动)
2.我们先使用alter命令增加一列到该表,然后对该表进行insert操作。
ALTER TABLE orc_test ADD COLUMNS (testing string);
INSERT overwrite table orc_test SELECT * FROM orc_test;
INSERT into table orc_test SELECT * FROM orc_test;
(可左右滑动)
3.发现无论是insert还是insert overwrite都会报错,如下。
-----
Diagnostic Messages for this Task:
Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:179)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java