從磚訪問Azure數據存儲Gen1湖

微軟宣布退休的計劃Azure數據存儲Gen1湖湖(原Azure的數據存儲,也稱為ADLS)和推薦所有用戶遷移到Azure數據存儲Gen2湖。磚建議升級到Azure代最佳數據湖存儲性能和新特性。

你可以直接訪問Azure數據存儲Gen1湖使用服務主體。

創建服務主體和授予權限

如果你選擇訪問方法需要一個服務主體與足夠的權限,你沒有,遵循這些步驟:

  1. 創建一個Azure廣告可以訪問資源的應用程序和服務主體。注意以下屬性:

    • 應用程序id:一個ID,惟一地標識客戶端應用程序。

    • directory-id:一個ID,惟一地標識Azure廣告實例。

    • service-credential:一個應用程序使用字符串來證明其身份。

  2. 注冊服務主體,給予正確的角色分配湖,如貢獻者,Azure數據存儲Gen1帳戶。

直接與火花訪問api使用服務主體和OAuth 2.0

湖從Azure數據讀取存儲Gen1帳戶,您可以配置火花與以下代碼片段使用服務憑證在你的筆記本:

火花相依(“fs.adl.oauth2.access.token.provider.type”,“ClientCredential”)火花相依(“fs.adl.oauth2.client.id”,“<應用程序id >”)火花相依(“fs.adl.oauth2.credential”,dbutils秘密得到(範圍=“< scope-name >”,關鍵=“< key-name-for-service-credential >”))火花相依(“fs.adl.oauth2.refresh.url”,“https://login.microsoftonline.com/ < directory-id > / oauth2 /令牌”)

在哪裏

  • dbutils.secrets.get(範圍=“< scope-name >”,關鍵=“<鍵名>”)檢索存儲帳戶訪問密鑰存儲為一個秘密在一個秘密的範圍

設置憑證之後,您可以使用標準的火花和磚api來訪問資源。例如:

瓦爾df=火花格式(“鋪”)。負載(“adl: / / <存儲資源>.azuredatalakestore.net/ <目錄名稱>”)dbutilsfsls(“adl: / / <存儲資源>.azuredatalakestore.net/ <目錄名稱>”)

Azure數據存儲Gen1湖提供目錄級別的訪問控製,因此服務主體必須獲得你想要的目錄讀取數據以及Azure存儲Gen1湖資源。

通過metastore

訪問adl: / /metastore中指定的位置,你必須指定Hadoop證書配置選項火花選擇當您創建集群通過添加spark.hadoop。前綴對應的Hadoop配置鑰匙傳播到Hadoop metastore所使用的配置:

spark.hadoop.fs.adl.oauth2.access.token.provider。類型ClientCredentialspark.hadoop.fs.adl.oauth2.client。id <應用程序id >spark.hadoop.fs.adl.oauth2。憑據< service-credential >spark.hadoop.fs.adl.oauth2.refresh。url https://login.microsoftonline.com/ < directory-id > / oauth2 /令牌

警告

  • 這些憑證提供給所有用戶訪問集群。

建立服務多個帳戶的憑證

您可以設置多個Azure服務憑證數據存儲Gen1湖占使用會話通過添加在星星之火帳戶。<帳戶名稱>配置鑰匙。舉個例子,如果你想設置賬戶訪問憑證adl: / / example1.azuredatalakestore.netadl: / / example2.azuredatalakestore.net你可以如下:

火花相依(“fs.adl.oauth2.access.token.provider.type”,“ClientCredential”)火花相依(“fs.adl.account.example1.oauth2.client.id”,“< application-id-example1 >”)火花相依(“fs.adl.account.example1.oauth2.credential”,dbutils秘密得到(範圍=“< scope-name >”,關鍵=“< key-name-for-service-credential-example1 >”))火花相依(“fs.adl.account.example1.oauth2.refresh.url”,“https://login.microsoftonline.com/ < directory-id-example1 > / oauth2 /令牌”)火花相依(“fs.adl.account.example2.oauth2.client.id”,“< application-id-example2 >”)火花相依(“fs.adl.account.example2.oauth2.credential”,dbutils秘密得到(範圍=“< scope-name >”,關鍵=“< key-name-for-service-credential-example2 >”))火花相依(“fs.adl.account.example2.oauth2.refresh.url”,“https://login.microsoftonline.com/ < directory-id-example2 > / oauth2 /令牌”)

這也適用於集群火花配置:

spark.hadoop.fs.adl.oauth2.access.token.provider。類型ClientCredentialspark.hadoop.fs.adl.account.example1.oauth2.client。id < application-id-example1 >spark.hadoop.fs.adl.account.example1.oauth2。憑據< service-credential-example1 >spark.hadoop.fs.adl.account.example1.oauth2.refresh。url https://login.microsoftonline.com/ < directory-id-example1 > / oauth2 /令牌spark.hadoop.fs.adl.account.example2.oauth2.client。id < application-id-example2 >spark.hadoop.fs.adl.account.example2.oauth2。憑據< service-credential-example2 >spark.hadoop.fs.adl.account.example2.oauth2.refresh。url https://login.microsoftonline.com/ < directory-id-example2 > / oauth2 /令牌

以下筆記本演示了如何訪問Azure數據直接存儲Gen1湖。筆記本的示例還顯示使用訪問DBFS山,它不支持這個版本的磚在穀歌的雲。

ADLS Gen1服務主體筆記本

在新標簽頁打開筆記本