hive问题-return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
生活随笔
收集整理的這篇文章主要介紹了
hive问题-return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
執行hive sql時遇到問題:
FAILED:Execution Error,return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
這個其實一般是個hive內部錯誤,處理這個問題就需要找日志了;
找日志
hive.log ===> 缺省情況下 /tmp/root/hive.log (不然就在你hive-site.conf配置的日志路徑里)
我這里在/tmp/root目錄下
去里面看了日志,沒有什么有價值的信息,只得去找MR日志了。
看MR日志,需要啟動historyserver、日志聚合 + SQL運行在集群模式
因為我在hive-site.conf中配置了本地模式
所以我從歷史日志中沒有找到相關日志記錄,所以在運行sql前執行set hive.exec.mode.local.auto=false 然后再執行之前的sql
再就可以從JobHistory頁面上看到對應的執行job,可以進去看詳細的錯誤日志
進去就可以看到詳細的錯誤信息了
解決方式:
其實之前寫的sql沒有什么大的問題,不過考慮之后還是改寫一下sql
改動之前:
改動sql之后執行成功:(我這里是寫在腳本中的sql)
#!/bin/bash source /etc/profile if [ -n "$1" ] ;thendo_date=$1 elsedo_date=`date -d "-1 day" +%F` fi sql=" create table tmp.tmp_member_retention as (selectt2.device_id,t2.uid,t2.app_v,t2.os_type,t2.language,t2.channel,t2.area,t2.brand,t2.dt add_date,1fromdws.dws_member_start_day t1joindws.dws_member_add_day t2ont1.device_id=t2.device_idwheret2.dt=date_add('$do_date',-1)andt1.dt='$do_date' union allselectt2.device_id,t2.uid,t2.app_v,t2.os_type,t2.language,t2.channel,t2.area,t2.brand,t2.dt add_date,2fromdws.dws_member_start_day t1joindws.dws_member_add_day t2ont1.device_id=t2.device_idwheret2.dt=date_add('$do_date',-2)andt1.dt='$do_date' union allselectt2.device_id,t2.uid,t2.app_v,t2.os_type,t2.language,t2.channel,t2.area,t2.brand,t2.dt add_date,3fromdws.dws_member_start_day t1joindws.dws_member_add_day t2ont1.device_id=t2.device_idwheret2.dt=date_add('$do_date',-3)andt1.dt='$do_date' );insert overwrite table dws.dws_member_retention_day partition(dt='$do_date') select * from tmp.tmp_member_retention; "hive -e "$sql"其實sql改動不大,無非是,改動后的是,創建一個臨時表,在插入到對應的表中
總結
以上是生活随笔為你收集整理的hive问题-return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HQL 报 return code 2
- 下一篇: MR详细运行原理及过程