最近Hive建表插入数据时遇到如下报错信息,折腾了好久,最终查出原因:
[ERROR] 2022-09-27 20:07:20.343 - [taskAppId=TASK-2015-3997441-7796400]:[242] - execute sql error java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask at org.apache.hive.jdbc.HiveStatement.waitForOperationToComplete(HiveStatement.java:348) at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:251) at org.apache.hive.jdbc.HiveStatement.executeUpdate(HiveStatement.java:448) at org.apache.hive.jdbc.HivePreparedStatement.executeUpdate(HivePreparedStatement.java:119) at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.executeFuncAndSql(SqlTask.java:236) at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.handle(SqlTask.java:139) at org.apache.dolphinscheduler.server.worker.runner.TaskExecuteThread.run(TaskExecuteThread.java:129) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
报错信息主要看这一句:
execute sql error
java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask相信大多数人多遇到过,导致此报错的原因有很多,我的属于建表时出现的问题
create table ...( ... ... ) comment '最近n日新增对象汇总表' partitioned by (dt string comment '分区') row format delimited fields terminated by '\t ' stored as orc tblproperties (' orc.compress ' = ' snappy ') ;
建表信息如上,问题出在两个地方:
① 分隔符 '\t' 中不能多加空格;
② tblproperties ('orc.compress' = 'snappy') ,属性名和属性值左右也不能多空格
否则会造成数据可查询成功,但不能插入到表中
还有很多其它原因也会导致此报错,可参考: