从砖访问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服务主体笔记本

在新标签页打开笔记本