从砖访问Azure数据存储Gen1湖
微软宣布退休的计划Azure数据存储Gen1湖湖(原Azure的数据存储,也称为ADLS)和推荐所有用户迁移到Azure数据存储Gen2湖。砖建议升级到Azure代最佳数据湖存储性能和新特性。
你可以直接访问Azure数据存储Gen1湖使用服务主体。
创建服务主体和授予权限
如果你选择访问方法需要一个服务主体与足够的权限,你没有,遵循这些步骤:
创建一个Azure广告可以访问资源的应用程序和服务主体。注意以下属性:
应用程序id
:一个ID,惟一地标识客户端应用程序。directory-id
:一个ID,惟一地标识Azure广告实例。service-credential
:一个应用程序使用字符串来证明其身份。
注册服务主体,给予正确的角色分配湖,如贡献者,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 /令牌”)
在哪里
设置凭证之后,您可以使用标准的火花和砖api来访问资源。例如:
瓦尔df=火花。读。格式(“铺”)。负载(“adl: / / <存储资源>.azuredatalakestore.net/ <目录名称>”)dbutils。fs。ls(“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的挂载点。dbutils。fs。山(源=“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的挂载点。dbutils。fs。山(源=“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.net
和adl: / / 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湖和山。