簡體   English   中英

使用 Azure Databricks 從 ADLS 訪問數據

[英]Access data from ADLS using Azure Databricks

我正在嘗試使用存儲帳戶訪問密鑰通過 Azure Databricks 訪問存儲在 ADLS 位置的數據文件。 要訪問數據文件,我在 azure databricks 和以下命令中使用 python 筆記本工作正常,

spark.conf.set(
  "fs.azure.account.key.<storage-account-name>.dfs.core.windows.net",
  "<access-key>"
)

但是,當我嘗試使用以下命令列出目錄時,會引發錯誤

dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net")

錯誤:

ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.ls.
: Operation failed: "This request is not authorized to perform this operation using this permission.", 403, GET, https://<storage-account-name>.dfs.core.windows.net/<container-name>?upn=false&resource=filesystem&maxResults=500&timeout=90&recursive=false, AuthorizationPermissionMismatch, "This request is not authorized to perform this operation using this permission. RequestId:<request-id> Time:2021-08-03T08:53:28.0215432Z"

我不確定它需要什么許可以及如何繼續。

此外,我正在使用 ADLS Gen2 和 Azure Databricks(試用版 - 高級版)。

提前致謝!

完整的配置密鑰稱為“spark.hadoop.fs.azure.account.key.adlsiqdigital.dfs.core.windows.net”

但是,使用服務帳戶和掛載點對生產環境來說是有益的。 這樣,存儲上的操作可以更容易地追溯到這個應用程序,而不僅僅是使用通用訪問密鑰和掛載點,避免在代碼中的任何地方指定連接字符串。

試試這個。

spark.conf.set("fs.azure.account.key.<your-storage-account-name>.blob.core.windows.net","<your-storage-account-access-key>")
dbutils.fs.mount(source = "abfss://<container-name>@<your-storage-account-name>.dfs.core.windows.net/", mount_point = "/mnt/test")

您可以通過 Databricks 使用訪問密鑰掛載 ADLS 存儲帳戶,然后讀取/寫入數據。 請嘗試以下代碼:

dbutils.fs.mount(
  source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
  mount_point = "/mnt/<mount-name>",
  extra_configs = {"fs.azure.account.key.<storage-account-name>.blob.core.windows.net":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

dbutils.fs.ls("/mnt/<mount-name>")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM