2017-01-15 33 views
5

我想將存儲在HDFS(文本文件)中的數據集加載到配置單元中進行分析。 我使用創建外部表如下:配置單元需要寫入權限的外部表

CREATE EXTERNAL table myTable(field1 STRING...) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE 
LOCATION '/user/myusername/datasetlocation'; 

這工作得很好,但它需要寫訪問到HDFS位置。這是爲什麼?

一般來說,裝載我沒有寫入權限的文本數據的正確方法是什麼?有沒有「只讀」外部表格類型?

編輯:我注意到this issue關於蜂巢關於這個問題。它似乎沒有得到解決。

+0

相關問題:http://stackoverflow.com/questions/37538487/why-does-the-user-need-write-permission-on-the-location-of-external-hive-table (但沒有答案..) – Amir

回答

0

我沒有一個解決的辦法,但作爲一種解決方法我發現

CREATE TEMPORARY EXTERNAL TABLE

作品沒有寫權限,區別在於表將您的會話後消失。

+0

太糟糕分區列在臨時表上不受支持 –

1

如果您需要到HDFS寫訪問的文件給 Hadoop的DFS -chmod 777 /文件夾名稱

這意味着你給的所有訪問權限,該文件。

+0

這正是問題所在。我不想(有時不能)獲得文件的寫入權限。通常數據是另一個過程的結果,我無法控制。 我只能讀取該數據集,因爲,我只需要讀取它。 – Amir

+0

好吧,我明白了。我測試了hdfs文件沒有寫入權限的配置單元外部查詢。它正在爲我執行。我所做的是我給hadoop存儲文件夾的權限。首先檢查你的hadoop文件夾是否具有完整的權限。如果沒有授予權限並檢查查詢,它應該在那個時間工作。 – Yasodhara

3

部分回答我的問題:

事實上,它似乎並沒有被通過蜂巢在這一刻得到解決。但是這裏有一個有趣的事實:配置單元不需要寫入文件本身,而只需要文件夾。例如,您可以擁有一個權限爲777的文件夾,但其中的文件(通過配置單元訪問)可以保持只讀狀態,例如, 644

相關問題