場景,開發用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" ;
