問題
您正在使用Azure磚,引發寫作ADLS Gen1存儲工作。
當你試圖手動讀取、寫入或刪除文件夾中的數據得到一個錯誤消息。
被禁止的。ACL驗證失敗。資源不存在或用戶沒有被授權執行請求的操作
導致
寫數據ADLS Gen1存儲時,Apache火花使用服務主體為它創建的文件的所有者。服務主體的定義dfs.adls.oauth2.client.id。
當文件被創建時,他們繼承的默認權限Hadoop文件係統。Hadoop文件係統有一個默認權限666 (-rw-rw-rw)和一個默認022年umask,結果在644年的權限設置為默認的文件。
當創建文件夾,他們繼承父文件夾的權限,默認是770。
因為老板是服務主體而不是用戶,你沒有權限訪問該文件夾由於0在文件夾的權限。
解決方案
選項1
使同一組的用戶服務主體部分為默認用戶。這將允許通過門戶訪問當訪問存儲。
請聯係微軟支持援助。
選項2
創建一個基礎文件夾ADLS Gen1和將權限設置為777。寫火花輸出在這個文件夾中。因為文件夾由火花繼承父文件夾的權限,所有文件夾由火花將有777權限。這允許任何用戶訪問文件夾。
選項3
更改默認umask從022年到000年在Azure磚集群。
集spark.hadoop.fs.permissions。umask-mode 000在火花配置為您的集群。
umask 000,默認Hadoop文件係統權限666成為默認的權限時使用Azure磚創建對象。