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


場景,開發用java程序連接presto創建一個表,這個表在hdfs的權限為:

然后用presto去刪除這個表

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

直連hive刪表

發現正常. 然后使用developer直連hive 創建表,用presto刪除還是報錯沒有權限。

 

連接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;

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

再次用presto(jmx.configure

 

)創建表

 

 發現 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" ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM