訪問Azure數據湖存儲Gen2和Blob存儲
使用Azure Blob文件係統驅動程序(ABFS)從Databricks連接到Azure Blob存儲和Azure Data Lake存儲Gen2。Databricks建議使用在集群配置中設置的Azure服務主體來保護對Azure存儲容器的訪問。
本文詳細介紹了如何使用以下方法訪問Azure存儲容器:
Unity Catalog管理外部位置
Azure服務主體
SAS令牌
賬戶的鑰匙
您將設置Spark屬性來為計算環境配置這些憑據,或者:
作用域為Databricks集群
範圍是數據庫筆記本
Azure服務主體也可以用於從Databricks SQL訪問Azure存儲;看到數據訪問配置.
Databricks推薦使用秘密的範圍用於存儲所有憑據。
用於從Databricks存儲和訪問數據的已棄用模式
以下是已棄用的存儲模式:
Databricks不再建議將外部數據位置掛載到Databricks文件係統。看到在Databricks上掛載雲對象存儲.
舊的Windows Azure存儲Blob驅動程序(WASB)已棄用。ABFS比WASB有許多優點。看到關於ABFS的Azure文檔.有關使用舊WASB驅動程序的文檔,請參見使用WASB連接到Azure Blob存儲(遺留).
Azure已經宣布即將退休Azure數據湖存儲Gen1.Databricks建議將所有Azure數據湖存儲Gen1遷移到Azure數據湖存儲Gen2。如果您還沒有遷移,請參見從Databricks訪問Azure Data Lake存儲Gen1.
直接訪問使用ABFS URI Blob存儲或Azure數據湖存儲Gen2
如果已正確配置憑據以訪問Azure存儲容器,則可以使用uri與存儲帳戶中的資源交互。Databricks建議使用abfss
驅動器更安全。
火花.讀.負載(“abfss: / / <容器名稱> @ < storage-account-name > .dfs.core.windows.net/ < path-to-data >”)dbutils.fs.ls(“abfss: / / <容器名稱> @ < storage-account-name > .dfs.core.windows.net/ < path-to-data >”)
創建表格<數據庫-的名字>.<表格-的名字>;複製成<數據庫-的名字>.<表格-的名字>從“abfss: / / container@storageAccount.dfs.core.windows.net/path/to/folder”FILEFORMAT=CSVCOPY_OPTIONS(“mergeSchema”=“真正的”);
通過Azure服務主體使用OAuth 2.0訪問Azure數據湖存儲Gen2或Blob存儲
您可以使用OAuth 2.0和Azure Active Directory (Azure AD)應用程序服務主體進行身份驗證,安全地訪問Azure存儲帳戶中的數據;看到使用Azure Active Directory訪問存儲.
service_credential=dbutils.秘密.得到(範圍=“< >範圍”,關鍵=“< 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 >
與應用程序(客戶端)ID用於Azure Active Directory應用程序。< directory-id >
與目錄(租戶)ID用於Azure Active Directory應用程序。
使用SAS令牌訪問Azure數據湖存儲Gen2或Blob存儲
你可以使用存儲共享訪問簽名(SAS)直接訪問Azure數據湖存儲Gen2存儲帳戶。使用SAS,可以使用帶有細粒度訪問控製的臨時令牌限製對存儲帳戶的訪問。
在同一個Spark會話中,可以為多個存儲帳戶配置SAS令牌。
請注意
在Databricks Runtime 7.5及以上版本中提供了SAS支持。
火花.相依.集(“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存儲的訪問。
火花.相依.集(“fs.azure.account.key。< storage-account > .dfs.core.windows.net”,dbutils.秘密.得到(範圍=“< >範圍”,關鍵=“< storage-account-access-key >”))
取代
< storage-account >
使用Azure存儲帳戶名。< >範圍
使用Databricks秘密作用域名。< storage-account-access-key >
包含Azure存儲帳戶訪問密鑰的密鑰名稱。