HIVE既然是运行在hadoop上,最后又被翻译为MapReduce程序,通过yarn来执行。所以我们如果想解决HIVE中出现的错误,需要分成几个过程
- HIVE自身翻译成为MR之前的解析错误
- Hadoop文件系统的错误
- YARN调度过程中的错误
2,3过程中的错误,请参考hadoop相关的教程,这里只是提醒大家思考的时候需要考虑到这两个方面的原因。搞清楚哪一个过程出问题之后采取进一步分析。
1.HIVE默认log文件保存的地方
/tmp/<user.name>文件夹的hive.log文件中,全路径就是/tmp/当前用户名/hive.log。
2.如何定位当前job的log信息
每个job执行后都会产生Query ID,在hive.log中搜索关键字。确认时间一致后,之后的log就是当前job的信息。
Query ID = root_20171108160217_d51b321f-1902-4353-ae5b-2ebe5227f82f
3,如何查看更多的错误信息
在默认的日志级别情况下,是不能将DEBUG信息输出,这样一来出现的各种详细的错误信息都是不能数错的。但是我们可以通过以下两种方式修改log4j输出的日志级别,从而利用这些调试日志进行错误定位,具体做法如下:
$ hive --hiveconf hive.root.logger=DEBUG,console (hive启动时用该命令替代)
或者在${HIVE_HOME}/conf/hive-log4j.properties文件中找到hive.root.logger属性,并将其修改为下面的设置
hive.root.logger=DEBUG,console
具体如何查询,就看自己了。