2015-10-05 38 views
2

我正在使用Cloudera 5.3.3蜂巢。蜂巢插入覆蓋本地目錄不工作

我試圖執行下面的查詢,

shell>pwd 
/home 
shell> mkdir test; chmod 777 test; 
shell> ls -al 
drwxrwxrwx 3 jai jai 4096 Oct 5 06:45 test 

hive query>INSERT OVERWRITE LOCAL DIRECTORY '/home/test/test1' SELECT * FROM some_table; 

它工作正常,並建立內部/家/測試時,我從蜂巢客戶端執行文件夾輸出文件,但它也沒有創造如果我執行相同的文件直線

經由直線從那裏蜂巢服務器2正在運行的機器連接到蜂房服務器2

我連接的蜂巢從直線作爲jai用戶。 文件夾/ home /測試

同樣的查詢,做工精細,如果我指着/tmp目錄文件夾(其中test文件夾有777權限)。它將mapreduce輸出複製到test1文件夾中,該文件夾具有以下權限並創建爲配置單元用戶。

shell>pwd 
/tmp 
shell> ls -al 
drwxrwxrwx 5 jai jai 4096 Oct 5 06:40 test  

beeline as jai user> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/test/test1' SELECT * FROM some_table; 

shell> cd test; 
shell> ls -al 
drwxr-xr-x 3 hive  hive  4096 Oct 5 06:37 test1 
+0

莫非是安全設置?例如,您可以向Sentry中的HiveServer2授予/拒絕特權,這將不受傳統Hive客戶端的尊重。 –

+0

@HellmarBecker HiveServer2日誌中沒有錯誤條目。 –

+0

我正面臨類似的問題。你能解決這個問題嗎? –

回答

0

我認爲觀察到的行爲可能與問題HIVE-11666有關。

當INSERT OVERWRITE LOCAL DIRECTORY時,Hive CLI寫入本地主機。但Beeline寫入HS2本地目錄。對於從CLI遷移到直線的用戶,這可能是一個很大的機會(原文如此)。

的解決方法可能是將其導出到HDFS

INSERT OVERWRITE DIRECTORY 'hdfs://<cluster>/tmp/test/test1' SELECT * FROM some_table; 

注:請不要忘記使用完全合格的路徑(以hdfs//),因爲它不會工作,否則(見here

然後簡單地把它

hdfs dfs -get hdfs://<cluster>/tmp/test/test1/<file name>