連接到數據存儲Gen2湖和Blob存儲Azure

這篇文章解釋了如何連接到Azure數據存儲Gen2湖和Blob存儲從磚。Azure數據存儲湖Gen2 faq和已知問題,明白了Azure湖數據存儲Gen2 FAQ

請注意

數據連接到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 >”)dbutilsfsls(“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”=“真正的”);

例如筆記本電腦

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

在新標簽頁打開筆記本

從磚棄用模式來存儲和訪問數據

以下是棄用存儲模式: