從磚訪問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資源或文件夾

湖山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 /令牌”}#可選地,您可以添加<目錄名稱>源URI的掛載點。dbutilsfs(=“adl: / / <存儲資源>.azuredatalakestore.net/ <目錄名稱>”,mount_point=“/ mnt / < mount-name >”,extra_configs=配置)
瓦爾配置=地圖(“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 /令牌”)/ /可選地,您可以添加<目錄名稱>源URI的掛載點。dbutilsfs(=“adl: / / <存儲資源>.azuredatalakestore.net/ <目錄名稱>”,掛載點=“/ mnt / < mount-name >”,extraConfigs=配置)

在哪裏

  • < mount-name >Azure的DBFS路徑表示數據存儲Gen1帳戶或一個文件夾裏麵湖(指定在嗎)將安裝在DBFS。

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

訪問文件在你的容器就像本地文件,例如:

df=火花格式(“文本”)負載(“/ mnt / < mount-name > / ....”)df=火花格式(“文本”)負載(“dbfs: / mnt / < mount-name > / ....”)
瓦爾df=火花格式(“文本”)。負載(“/ mnt / < mount-name > / ....”)瓦爾df=火花格式(“文本”)。負載(“dbfs: / mnt / < mount-name > / ....”)

建立服務多個帳戶的憑證

您可以設置多個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湖和山。

ADLS Gen1服務主體筆記本

在新標簽頁打開筆記本