使用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推薦使用秘密的範圍用於存儲所有憑據。
已棄用的從Databricks存儲和訪問數據的模式
以下是已棄用的存儲模式:
Databricks不再建議將外部數據位置掛載到Databricks文件係統。看到通過Databricks掛載雲對象存儲.
舊的Windows Azure存儲團驅動程序(WASB)已被棄用。ABFS比WASB有許多好處。看到關於ABFS的Azure文檔.有關使用遺留WASB驅動程序的文檔,請參見使用WASB連接到Azure Blob存儲(遺留).
Azure宣布了即將退休的Azure數據湖存儲Gen1.Databricks建議將所有Azure數據湖存儲Gen1遷移到Azure數據湖存儲Gen2。如果您還沒有遷移,請參見從Databricks訪問Azure數據湖存儲Gen1.
使用Blob存儲或Azure數據湖存儲Gen2的ABFS URI直接訪問
如果您正確配置了訪問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服務主體配置對Azure存儲的訪問.
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 >
與應用程序(客戶端)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存儲帳戶訪問密鑰的密鑰的名稱。