取消
顯示的結果
而不是尋找
你的意思是:

錯誤Azure-Databricks寫輸出blob存儲賬戶

TheoDeSo
新的貢獻者三世

你好,

實施後秘密的使用範圍在azure密鑰庫來存儲機密,我麵臨一個問題。

當寫作輸出blob我得到以下錯誤:

shaded.databricks.org.apache.hadoop.fs.azure.AzureException:無法訪問容器分析賬戶[編輯].blob.core.windows.net使用匿名的憑證,憑證中還沒有發現它們的配置。

經過調查,以下是相關配置之前設置的高級配置集群配置:

“spark.hadoop.fs.azure.account.key.y.blob.core.windows.net”、“myStorageAccountKey”

我想找到方法來設置這個檢索後的筆記本級別的秘密秘密範圍:

spark.conf.set (“spark.hadoop.fs.azure.account.key.y.blob.core.windows.net”、“myStorageAccountKey”)

很遺憾這並不工作。

下麵我寫的輸出的一個例子:

df.write.format (com.crealytics.spark.excel) \ .option (“dataAddress”、““% s”!A1“% (sheetName)) \ .option(“頭”,“真正的”)\ .option (“dateFormat”、“yy-mm-d”) \ .option (“timestampFormat”; hh: mm: ss) \ .option (“useHeader”,“真正的”)\ .mode(“追加”)\ .save (“% s / % s”% (output_blob_folder outputName))

1接受解決方案

接受的解決方案

TheoDeSo
新的貢獻者三世

你好,謝謝你的建議。

這樣做

spark.conf.set (“fs.azure.account.key。{storage_account} .dfs.core.windows.net”、“{myStorageAccountKey}”)

hadoop配置不起作用。

和建議的@Tharun-Kumar建議配置中硬編碼秘密這是一個大不。

別人提出適當的解決方案堆棧溢出的是添加在同一位置@Tharun-Kumar建議增加,但同時指向秘密範圍:

spark.hadoop.fs.azure.account.key。< account_name > .blob.core.windows.net{{秘密/ < secret-scope-name > / <秘密名字>}}

在原帖子查看解決方案

7回複7

Tharun-Kumar
重視貢獻三世
重視貢獻三世

@TheoDeSo

您需要編輯火花配置通過輸入連接信息的Azure存儲賬戶。

輸入以下:
spark.hadoop.fs.azure.account.key。< STORAGE_ACCOUNT_NAME >。blob.core.windows.net< ACCESS_KEY >

其中< STORAGE_ACCOUNT_NAME >是Azure存儲賬戶名稱、和< ACCESS_KEY >是存儲訪問鍵。

你需要包含這個火花配置並重新啟動集群來克服這個問題。

TheoDeSo
新的貢獻者三世

你好,很遺憾這不是理想的解決方案,因為這涉及到硬編碼在集群的配置的秘密。我張貼在堆棧溢出的問題https://stackoverflow.com/questions/76655569/databricks-not-allowing-to-write-output-to-folder-using..。並得到了想要的答案。

在集群配置中我寫了以下幾點:

spark.hadoop.fs.azure.account.key。< account_name > .blob.core.windows.net{{秘密/ < secret-scope-name > / <秘密名字>}}

Prabakar
尊敬的貢獻者三世
尊敬的貢獻者三世

請參考文檔連接到Azure數據存儲Gen2湖和Blob存儲Azure磚|微軟學習。這命令,您可以使用設置火花從筆記本配置水平。

service_credential = dbutils.secrets.get(範圍= < secret-scope >”,鍵= < service-credential-key >)

spark.conf.set (“fs.azure.account.auth.type。< storage-account > .dfs.core.windows.net”、“OAuth”)
spark.conf.set (“fs.azure.account.oauth.provider.type。< storage-account > .dfs.core.windows.net”、“org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider”)
spark.conf.set (“fs.azure.account.oauth2.client.id。< storage-account > .dfs.core.windows.net”、“<應用程序id >”)
spark.conf.set (“fs.azure.account.oauth2.client.secret。< storage-account > .dfs.core.windows.net”, service_credential)
spark.conf.set (“fs.azure.account.oauth2.client.endpoint。< storage-account > .dfs.core.windows.net”、“https://login.microsoftonline.com/ < directory-id > / oauth2 /令牌”)

取代

  • < secret-scope >磚秘密範圍的名稱。
  • < service-credential-key >鍵的名稱包含客戶的秘密。
  • < storage-account >Azure存儲賬戶的名稱。
  • <應用程序id >應用程序(客戶端)IDAzure的活動目錄的應用程序。
  • < directory-id >目錄(租戶)IDAzure的活動目錄的應用程序。

赫曼特
重視貢獻二世

@Prabakar您使用的是這裏的服務原則。

赫曼特索尼
歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map