日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive报错(1)MoveTask/HIVE return code 1、2、3

發布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive报错(1)MoveTask/HIVE return code 1、2、3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在CDH上執行hive sql的時候報了一個錯

錯誤內容為:

????FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask
錯誤語句:

????INSERT OVERWRITE DIRECTORY '{$dir}' select * from tmp_analyse_os where logdata='{$begin}'??

錯誤原因:

????hive源碼會檢查導出的路徑是否存在,如果不存在則報這個錯。這個錯只有在CDH上的hive才會報錯,apache已經修復了這個bug,其實CDH不是沒有修復這個bug,而是添加了一個配置文件,但配置文件默認是false(蛋疼)。

解決方法:

????在hive上添加一個配置即可。

<property> <name>hive.insert.into.multilevel.dirs</name> <value>true</value> </property>

下面是源碼中關于文件權限繼承的開關代碼:
HiveConf.ConfVars.HIVE_WAREHOUSE_SUBDIR_INHERIT_PERMS);
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;

產生問題的原因:
hive的查詢結果在在進行move操作時,需要進行文件權限的授權,多個文件的授權是并發進行的,hive中該源碼是在一個線程池中
執行的,該操作在多線程時線程同步有問題的該異常,這是hive的一個bug,目前截止目前的最新版本Apache Hive 2.1.1還沒有修復該問題;
可以通過關閉hive的文件權限繼承 hive.warehouse.subdir.inherit.perms=false 來規避該問題。

解決方法:
hive.warehouse.subdir.inherit.perms

<property><name>hive.warehouse.subdir.inherit.perms</name><value>true</value><description>Set this to false if the table directories should be createdwith the permissions derived from dfs umask instead ofinheriting the permission of the warehouse or database directory.</description> </value>

return code 1?

原因:

? ? ??'Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask'? ? ?

? ? ? 報錯是抄的,多次實踐證明,執行hive sql ERROR 返回?return code 1 基本上是執行的HQL無法加入到對應的用戶隊列中。

解決方法 1:

? ? ? 執行HQL前,加入 set MapReduce.queue?= QUEUE_CRA; CRA(用戶名)

解決方法 2:

? ? ?? ? ?hdfs dfs命令對文件夾下的文件賦予權限。使其可以進行操作。

?

return code 2:

? ? ?原因 1:

? ? ? ? ?HQL產生較大的笛卡爾積,撐爆了HIVE 執行的最大線程載荷。

? ? ?解決方法:

? ? ? ? ?優化HQL.

? ? ?原因 2 :

Hive運行成功之后,當輸入select count(*) from XX或者插入數據時,居然碰到BUG。

2016-04-14 12:31:56,199 Stage-1 map = 0%,??reduce = 0%

Ended Job = job_1460599682683_0005 with errors

Error during job, obtaining debugging information...

FAILED: Execution Error, return code 2 fromorg.apache.hadoop.hive.ql.exec.mr.MapRedTask

MapReduce Jobs Launched:

Stage-Stage-1:??HDFS Read: 0HDFS Write: 0 FAIL

Total MapReduce CPU Time Spent: 0 msec
這個問題只是HIVE單方面的問題,而用Hadoop ?Job日志查看,卻是YarnException: Unauthorized request to start container的問題。未經授權的請求,怎么會有這樣的問題呢。經過網上未解,說是各個節點的時間未同步的問題。

解決方法:

簡直是暈,不知道誰剛好把某個節點時間修改了。才導致了這樣的坑,居然都踩上了。于是把時間進行修改,進行系統時間同步,果然沒有再次出現。
return code 3:

? ? 主要原因是數據傾斜。

解決方法 1:? ?對數據大的表進行GROUP BY ,減少數據量。

解決方法 2:?

? ?set hive.auto.convert.join = false;? ? ? ?

? ? ? ??說明:是不是依據輸入文件的大小,將Join轉成普通的Map Join

? ? ? ??默認值: false

? ?set hive.ignore.mapjoin.hint = false;

? ? ? ??說明:?是否忽略mapjoin hint 即mapjoin標記

? ? ? ???默認值: true

? ?set hive.exec.parallel = true;? ? ?

? ? ? ? ??說明:是否并行提交任務

? ? ? ? ?默認值:false

總結

以上是生活随笔為你收集整理的hive报错(1)MoveTask/HIVE return code 1、2、3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。