连接到数据存储Gen2湖和Blob存储Azure
这篇文章解释了如何连接到Azure数据存储Gen2湖和Blob存储从砖。Azure数据存储湖Gen2 faq和已知问题,明白了Azure湖数据存储Gen2 FAQ。
请注意
遗留Windows Azure存储Blob司机(WASB)已经被弃用。沛富WASB有许多好处。看到Azure文档沛富。为文档处理遗留WASB司机,看到的连接到Azure Blob存储与WASB(遗留)。
Azure宣布即将退休的Azure数据存储Gen1湖。砖建议所有数据从Azure数据存储Gen1湖迁移到Azure数据存储Gen2湖。如果你还没有迁移,明白了从砖访问Azure数据存储Gen1湖。
数据连接到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 >”)dbutils。fs。ls(“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”=“真正的”);