連接到數據存儲Gen2湖和Blob存儲Azure
這篇文章解釋了如何連接到Azure數據存儲Gen2湖和Blob存儲從磚。Azure數據存儲湖Gen2 faq和已知問題,明白了Azure湖數據存儲Gen2 FAQ。
請注意
遺留Windows Azure存儲Blob司機(WASB)已經被棄用。沛富WASB有許多好處。看到Azure文檔沛富。為文檔處理遺留WASB司機,看到的連接到Azure Blob存儲與WASB(遺留)。
Azure宣布即將退休的Azure數據存儲Gen1湖。磚建議所有數據從Azure數據存儲Gen1湖遷移到Azure數據存儲Gen2湖。如果你還沒有遷移,明白了從磚訪問Azure數據存儲Gen1湖。
數據連接到Azure湖代或Blob存儲使用Azure存儲憑證
下列憑證可以用來訪問代或Blob存儲Azure湖數據存儲:
OAuth 2.0 Azure服務主體:磚建議使用Azure服務主體連接到Azure存儲。創建一個Azure服務主體和提供訪問Azure存儲賬戶,明白了訪問存儲Azure的Active Directory。
要創建一個Azure服務主體,必須有
應用程序管理員
作用或Application.ReadWrite.All
允許在Azure Active Directory。在存儲帳戶分配角色必須是一個所有者或用戶與用戶訪問存儲賬戶管理員Azure RBAC角色。共享訪問簽名(SAS):您可以使用存儲SAS令牌訪問Azure存儲。通過情景應用程序,您可以限製訪問存儲賬戶使用臨時令牌和細粒度的訪問控製。
你隻能授予一個SAS令牌上權限存儲賬戶,容器,或文件。
賬戶的鑰匙:您可以使用存儲帳戶訪問鍵管理訪問Azure存儲。存儲帳戶訪問鍵提供完全訪問的配置存儲賬戶,以及數據。磚建議使用Azure服務主體或SAS令牌連接到Azure存儲,而不是帳戶密鑰。
查看一個帳戶的訪問鍵,你必須有業主,貢獻者,或存儲賬戶存儲帳戶密鑰運營商服務的作用。
磚建議使用秘密的範圍來存儲所有的憑證。能給予用戶、服務主體和組織您的工作區中獲得閱讀的秘密範圍。這個保護Azure的憑證,同時允許用戶訪問Azure存儲。創建一個秘密範圍,明白了秘密的範圍。
設置火花屬性配置訪問Azure存儲Azure憑證
你可以設置屬性來配置一個火花Azure憑據訪問Azure存儲。憑證可以局限於集群或筆記本。同時使用集群訪問控製和筆記本一起訪問控製保護進入Azure存儲。看到集群訪問控製和工作區對象訪問控製。
設置火花屬性,使用以下代碼片段在集群的火花配置或筆記本:
使用以下格式設置集群火花的配置:
OAuth fs.azure.account.auth.type。< storage-account > .dfs.core.windows.netfs.azure.account.oauth.provider.type。< storage-account > .dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProviderfs.azure.account.oauth2.client.id。< storage-account > .dfs.core.windows.net <應用程序id >fs.azure.account.oauth2.client.secret。< storage-account > .dfs.core.windows.net{{秘密/ < secret-scope > / < service-credential-key >}}fs.azure.account.oauth2.client.endpoint。< storage-account > .dfs.core.windows.net https://login.microsoftonline.com/ < directory-id > / oauth2 /令牌
您可以使用spark.conf.set
在筆記本電腦,如以下示例所示:
service_credential=dbutils。秘密。得到(範圍=“< secret-scope >”,關鍵=“< 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 /令牌”)
取代
< secret-scope >
磚秘密範圍的名稱。< service-credential-key >
的名稱包含客戶的關鍵秘密。< storage-account >
Azure存儲賬戶的名稱。<應用程序id >
與應用程序(客戶端)IDAzure的活動目錄的應用程序。< directory-id >
與目錄(租戶)IDAzure的活動目錄的應用程序。
您可以配置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”。,dbutils。秘密。得到(範圍=“< >範圍”,關鍵=“< sas-token-key >”))
取代
< storage-account >
Azure存儲帳戶名稱。<範圍>
磚秘密範圍的名稱。< sas-token-key >
的名稱包含Azure存儲的關鍵SAS令牌。
火花。相依。集(“fs.azure.account.key < storage-account > .dfs.core.windows.net”。,dbutils。秘密。得到(範圍=“< >範圍”,關鍵=“< storage-account-access-key >”))
取代
< storage-account >
Azure存儲帳戶名稱。<範圍>
磚秘密範圍的名稱。< storage-account-access-key >
的名字包含Azure存儲帳戶訪問關鍵的關鍵。
訪問Azure存儲
一旦你已經正確配置了憑據訪問Azure存儲容器,您可以存儲賬戶與資源使用uri。磚推薦使用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”=“真正的”);