2017-10-06 49 views
1

我創建了3節點Hadoop羣集,其中包含1個namenode和2個datanode。使用直線外殼匿名用戶匿名權限

我可以從Hive shell執行讀取/寫入查詢,但不是直線。

我發現了很多與此問題相關的建議和解答。
在每個建議中都提到要爲每個表提供userX的許可。
但我不知道如何爲匿名用戶一勞永逸地設置權限。

爲什麼我在從直線或Java程序訪問數據時獲取用戶匿名?

我能夠從兩個beeline shell中讀取數據並使用Java JDBC連接。
但我不能在表中插入數據。

這是我的jdbc連接:jdbc:hive2:// hadoop01:10000。

下面是我同時插入請求獲得我的錯誤:

權限被拒絕:用戶=匿名,訪問=寫,索引節點=「/用戶/蜂巢/倉儲/ test_log/.hive-staging_hive_2017-10- 07_06-54-36_347_6034469031019245441-1" :Hadoop的:超羣的。drwxr-XR-X

+1

什麼是你的JDBC連接URL?您也可以在上述問題中添加實際錯誤。 – Shubhangi

+0

@Shubhangi我編輯了我的帖子。我已經包含連接網址和錯誤消息。 – sachin

回答

3

直線語法

beeline -n username -u "url" 

我認爲你缺少的用戶名。此外,沒有之一,但Hadoop的用戶有寫訪問到該表反正

如果你沒有在表的權限完全控制,你可以嘗試用設置hive.exec.stagingdir

+0

我試圖改變暫存目錄,但是然後配置單元開始給出錯誤'插入覆蓋查詢失敗,執行錯誤,從org.apache.hadoop.hive.ql.exec.MoveTask'返回代碼1' – sachin

+0

可能再次,用戶=匿名'沒有權限到目標表 –

0

如果沒有數據庫搬遷臨時目錄在連接URL連接指定,像

的jdbc:hive2:// hadoop01:10000 /默認

然後直線連接到數據庫DEFA ULT,並將數據插入表中 - 首先將數據加載到默認數據庫中的臨時表,然後加載到實際表中。

因此,您還需要授予用戶對DEFAULT數據庫的訪問權限,或者您可以連接到您有權訪問的數據庫。

的jdbc:hive2:// hadoop01:10000/your_db