访问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存储和访问数据的已弃用模式
以下是已弃用的存储模式:
旧的Windows Azure存储Blob驱动程序(WASB)已弃用。ABFS比WASB有许多优点。看到关于ABFS的Azure文档.有关使用旧WASB驱动程序的文档,请参见使用WASB连接到Azure Blob存储(遗留).
Azure已经宣布即将退休Azure数据湖存储Gen1.Databricks建议将所有Azure数据湖存储Gen1迁移到Azure数据湖存储Gen2。如果您还没有迁移,请参见从Databricks访问Azure Data Lake存储Gen1.
直接访问使用ABFS URI Blob存储或Azure数据湖存储Gen2
如果已正确配置凭据以访问Azure存储容器,则可以使用uri与存储帐户中的资源交互。Databricks建议使用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”=“真正的”);
通过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存储帐户访问密钥的密钥名称。