記一次生產環境presto刪表失敗的問題

場景,開發用java程序鏈接presto建立一個表,這個表在hdfs的權限爲:java

而後用presto去刪除這個表測試

報錯,沒有權限刪除,查看上一級目錄權限,發現權限正常3d

直連hive刪表rest

發現正常. 而後使用developer直連hive 建立表,用presto刪除仍是報錯沒有權限。blog

 

鏈接hive 元數據MySQL  開發

select t.OWNER, p.PRINCIPAL_NAME, count(1)  from TBLS t      join TBL_PRIVS p on p.TBL_ID=t.TBL_ID  group by t.OWNER, p.PRINCIPAL_NAME;class

查看錶的屬主  select OWNER ,TBL_NAME  from TBLS  where TBL_NAME="t_5d550e8bce6a1952f8a8af7c" ;配置

再次用presto(jmx.configure select

 

)建立表權限

 

 發現 common對應的count增長了,可是developer的沒有增長。

 

問題就明瞭了。 presto默認是以啓動presto的用戶來作hive元數據的也就是這裏的common用戶, 可是存儲用戶是以jmx.configure 裏面配置的用戶來設定的。因此 在presto裏面(developer用戶進入)刪除這個表會提示權限不夠

 

解決方法修改 jmx.config

而後以common用戶啓動presto

 

 

 

最新結論

presto 有兩個用戶配置

第一個是 這個配置影響的是數據 在hdfs裏面寫入的屬主

 

第二個是

這個配置目前測試並無什麼用!!!

 

另外 java程序的配置文件 以及你本地鏈接presto用的是什麼用戶  那麼這個用戶就是 hive裏面建立的表的元數據的屬主。

查看錶的屬主  select OWNER ,TBL_NAME  from TBLS  where TBL_NAME="t_5d550e8bce6a1952f8a8af7c" ;

相關文章
相關標籤/搜索