关于执行SQL报错:java.lang.ArrayIndexOutOfBoundsException: 6
关于执行SQL报错:java.lang.ArrayIndexOutOfBoundsException: 6由于工作需要,需创建一个表C,表数据由表A left join 表B生成,表A数据量大概300万行,表B数据量大概600万行左右,字段不多,但是脚本执行一直报错一开始报错,查询日志提示信息为:return code 2 from org.apache.hadoop.hive.ql.exec.m
关于执行SQL报错:java.lang.ArrayIndexOutOfBoundsException: 6
由于工作需要,需创建一个表C,表数据由表A left join 表B生成,表A数据量大概300万行,表B数据量大概600万行左右,字段不多,但是脚本执行一直报错
一开始报错,查询日志提示信息为:return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
百度查询具体原因要查看详细日志,打印日志发现提示内存溢出,但是2表的数据量不应该导致内存不够,尝试以下方案:
1、考虑大小表关联问题,加入参数
set hive.execution.engine=mr;
set hive.mapjoin.smalltable.filesize=55000000;
set hive.auto.convert.join = false;
继续报错
2、考虑MR内存限制,加入参数
set hive.auto.convert.join = false
还是报错
报错信息更改为数组越界,如下:java.lang.ArrayIndexOutOfBoundsException: 6
查看表字段及内容,无发现异常,最终排查发现是建表时贪图方便,直接在presto上建,该表在presto上可直接查询,换成hive查询就会报java.lang.ArrayIndexOutOfBoundsException: 6,删表后在hive上重建就可以,真真是大坑小坑,坑坑不息,以此为记录,时刻告诫自己,操作规范的重要性。
更多推荐




所有评论(0)