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
具體如何查詢,就看自己了。