访问Azure数据湖存储Gen2和Blob存储

使用Azure Blob文件系统驱动程序(ABFS)从Databricks连接到Azure Blob存储和Azure Data Lake存储Gen2。Databricks建议使用在集群配置中设置的Azure服务主体来保护对Azure存储容器的访问。

请注意

Databricks不再建议将外部数据位置挂载到Databricks文件系统。看到在Databricks上挂载云对象存储

本文详细介绍了如何使用以下方法访问Azure存储容器:

  • Unity Catalog管理外部位置

  • Azure服务主体

  • SAS令牌

  • 账户的钥匙

您将设置Spark属性来为计算环境配置这些凭据,或者:

  • 作用域为Databricks集群

  • 范围是数据库笔记本

Azure服务主体也可以用于从Databricks SQL访问Azure存储;看到数据访问配置

Databricks推荐使用秘密的范围用于存储所有凭据。

用于从Databricks存储和访问数据的已弃用模式

以下是已弃用的存储模式:

直接访问使用ABFS URI Blob存储或Azure数据湖存储Gen2

如果已正确配置凭据以访问Azure存储容器,则可以使用uri与存储帐户中的资源交互。Databricks建议使用abfss驱动器更安全。

火花负载“abfss: / / <容器名称> @ < storage-account-name > .dfs.core.windows.net/ < path-to-data >”dbutilsfsls“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”=“真正的”);

通过Azure服务主体使用OAuth 2.0访问Azure数据湖存储Gen2或Blob存储

您可以使用OAuth 2.0和Azure Active Directory (Azure AD)应用程序服务主体进行身份验证,安全地访问Azure存储帐户中的数据;看到使用Azure Active Directory访问存储

service_credential=dbutils秘密得到范围=“< >范围”关键=“< 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 /令牌”

取代

  • < >范围使用Databricks秘密作用域名。

  • < service-credential-key >使用包含客户端秘密的密钥的名称。

  • < storage-account >使用Azure存储帐户的名称。

  • <应用程序id >应用程序(客户端)ID用于Azure Active Directory应用程序。

  • < directory-id >目录(租户)ID用于Azure Active Directory应用程序。

使用SAS令牌访问Azure数据湖存储Gen2或Blob存储

你可以使用存储共享访问签名(SAS)直接访问Azure数据湖存储Gen2存储帐户。使用SAS,可以使用带有细粒度访问控制的临时令牌限制对存储帐户的访问。

在同一个Spark会话中,可以为多个存储帐户配置SAS令牌。

请注意

在Databricks Runtime 7.5及以上版本中提供了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”“<标记>”

使用帐户密钥访问Azure数据湖存储Gen2或Blob存储

你可以使用存储帐户访问密钥来管理对Azure存储的访问。

火花相依“fs.azure.account.key。< storage-account > .dfs.core.windows.net”dbutils秘密得到范围=“< >范围”关键=“< storage-account-access-key >”))

取代

  • < storage-account >使用Azure存储帐户名。

  • < >范围使用Databricks秘密作用域名。

  • < storage-account-access-key >包含Azure存储帐户访问密钥的密钥名称。

例如笔记本电脑

ADLS Gen2 OAuth 2.0与Azure服务主体笔记本

在新标签页打开笔记本

Azure数据湖存储Gen2常见问题和已知问题

看到Azure数据湖存储Gen2常见问题解答