使用Databricks訪問Azure數據湖存儲Gen2和Blob存儲

使用Azure Blob Filesystem驅動程序(ABFS)從Databricks連接到Azure Blob Storage和Azure Data Lake Storage Gen2。Databricks建議通過使用在集群配置中設置的Azure服務主體來保護對Azure存儲容器的訪問。

本文詳細介紹了如何使用以下方法訪問Azure存儲容器:

  • Unity Catalog管理外部位置

  • Azure服務主體

  • SAS令牌

  • 賬戶的鑰匙

您可以設置Spark屬性來為計算環境配置這些憑據:

  • 作用域為Databricks集群

  • 作用域為Databricks筆記本

Azure服務主體還可以用於從Databricks SQL訪問Azure存儲;看到配置雲存儲接入

磚推薦使用秘密的範圍用於存儲所有憑據。

已棄用的從Databricks存儲和訪問數據的模式

以下是已棄用的存儲模式:

使用Blob存儲或Azure數據湖存儲Gen2的ABFS URI直接訪問

如果您正確配置了訪問Azure存儲容器的憑證,那麼您就可以使用uri與存儲帳戶中的資源進行交互。Databricks建議使用abfss司機更安全。

火花負載“abfss: / / <容器名稱> @ < storage-account-name > .dfs.core.windows.net/ < path-to-data >”dbutilsfsls“abfss: / / <容器名稱> @ < storage-account-name > .dfs.core.windows.net/ < path-to-data >”
創建表格<數據庫-的名字><表格-的名字>複製<數據庫-的名字><表格-的名字>“abfss: / / container@storageAccount.dfs.core.windows.net/path/to/folder”FILEFORMATCSVCOPY_OPTIONS“mergeSchema”“真正的”);

使用帶有Azure服務主體的OAuth 2.0訪問Azure數據湖存儲Gen2或Blob存儲

使用OAuth 2.0和Azure Active Directory (Azure AD)應用服務主體進行身份驗證,您可以安全地訪問Azure存儲帳戶中的數據;看到使用Azure Active Directory服務主體配置對Azure存儲的訪問

service_credentialdbutils秘密得到範圍“< >範圍”關鍵“< service-credential-key >”火花相依“fs.azure.account.auth.type。< storage-account > .dfs.core.windows.net”“OAuth”火花相依“fs.azure.account.oauth.provider.type。< storage-account > .dfs.core.windows.net”“org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider”火花相依“fs.azure.account.oauth2.client.id。< storage-account > .dfs.core.windows.net”“<應用程序id >”火花相依“fs.azure.account.oauth2.client.secret。< storage-account > .dfs.core.windows.net”service_credential火花相依“fs.azure.account.oauth2.client.endpoint。< storage-account > .dfs.core.windows.net”“https://login.microsoftonline.com/ < directory-id > / oauth2 /令牌”

取代

  • < >範圍使用Databricks的秘密作用域名稱。

  • < service-credential-key >使用包含客戶端秘密的密鑰的名稱。

  • < storage-account >使用Azure存儲帳戶的名稱。

  • <應用程序id >應用程序(客戶端)IDAzure活動目錄應用程序。

  • < directory-id >目錄(租戶)IDAzure活動目錄應用程序。

使用SAS令牌訪問Azure數據湖存儲Gen2或Blob存儲

你可以使用存儲共享訪問簽名(SAS)直接訪問Azure數據湖存儲Gen2存儲帳戶。使用SAS,您可以使用帶有細粒度訪問控製的臨時令牌來限製對存儲帳戶的訪問。

可以為同一個Spark會話中的多個存儲帳戶配置SAS令牌。

請注意

SAS支持在Databricks Runtime 7.5及以上版本中可用。

火花相依“fs.azure.account.auth.type。< storage-account > .dfs.core.windows.net”“sa”火花相依“fs.azure.sas.token.provider.type。< storage-account > .dfs.core.windows.net”“org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider”火花相依“fs.azure.sas.fixed.token。< storage-account > .dfs.core.windows.net”“<標記>”

使用帳戶密鑰訪問Azure數據湖存儲Gen2或Blob存儲

您可以使用存儲帳戶訪問密鑰來管理對Azure Storage的訪問。

火花相依“fs.azure.account.key。< storage-account > .dfs.core.windows.net”dbutils秘密得到範圍“< >範圍”關鍵“< storage-account-access-key >”))

取代

  • < storage-account >使用Azure Storage帳戶名。

  • < >範圍使用Databricks的秘密作用域名稱。

  • < storage-account-access-key >使用包含Azure存儲帳戶訪問密鑰的密鑰的名稱。

例如筆記本電腦

ADLS Gen2 OAuth 2.0與Azure服務的主體筆記本

Azure數據湖存儲Gen2常見問題和已知問題

看到Azure數據湖存儲Gen2常見問題和已知問題