Databricks 中的默认存储

本页介绍 Azure Databricks 上的默认存储的工作原理,以及如何创建使用该存储的目录和数据对象。

什么是默认存储?

默认存储是一个完全托管的对象存储平台,用于在 Azure Databricks 帐户中提供现成的存储。 某些 Azure Databricks 功能使用默认存储作为外部存储的替代方法。

无服务器工作区使用默认存储来进行内部和工作区的存储,以及为工作区创建的默认目录。 在无服务器工作区中,可以在默认存储或自己的 云对象存储中创建其他目录。

在经典工作区和无服务器工作区中,默认存储由功能用来存储控制平面元数据、派生数据、模型和其他项目等内容。 例如, 清理室数据分类异常情况检测代理砖块 都使用工作区的默认存储。 有关每个功能存储在默认存储上的详细信息,请参阅各个功能文档。

要求

  • 在默认存储上创建目录仅适用于 无服务器工作区 (公共预览版)。
  • 默认情况下,只能从创建默认存储的工作区访问使用默认存储的目录。 可以授予其他工作区访问权限,包括经典工作区,但它们必须使用无服务器计算访问目录中的数据。 请参阅将目录访问限制到特定工作区
  • 必须具有 CREATE CATALOG 创建具有默认存储的目录的权限。 请参阅 Unity Catalog 特权和安全对象
  • 如果客户端使用 Azure Databricks ODBC 驱动程序从防火墙后面访问默认存储目录,则必须将防火墙配置为允许访问 Azure Databricks 区域存储网关。 有关默认存储的 IP 和域名详细信息,请参阅 Azure Databricks 服务和资产的 IP 地址和域

“创建新目录”

完成以下步骤,使用默认存储创建新目录:

  1. 点击边栏中的“数据”图标目录。 此时会显示目录资源管理器。
  2. 单击“创建目录”。 此时会显示 “创建新目录 ”对话框。
  3. 提供帐户中唯一的 目录名称
  4. 选择“ 使用默认存储”选项。
  5. 单击 “创建”

在无服务器工作区中,还可以使用以下 SQL 命令在默认存储中创建新目录。 无需指定目录的位置。

CREATE CATALOG [ IF NOT EXISTS ] catalog_name
    [ COMMENT comment ]

使用默认存储

与默认存储的所有交互都需要无服务器且已启用 Unity 目录的计算。

默认情况下,存储支持的资源使用与 Unity 目录中其他对象相同的特权模型。 必须具有足够的权限才能创建、查看、查询或修改数据对象。 请参阅 Unity Catalog 特权和安全对象

通过创建托管表和托管卷并与默认存储支持的托管卷进行交互,可以处理默认存储。 请参阅 Azure Databricks for Delta Lake 和 Apache Iceberg 中的 Unity 目录托管表以及什么是 Unity 目录卷?

可以使用目录资源管理器、笔记本、SQL 编辑器和仪表板与默认存储中存储的数据对象进行交互。

示例任务

下面是可以使用默认存储完成的任务示例:

局限性

以下限制适用:

  • 经典计算(任何非无服务器计算)都无法与默认存储中的数据资产进行交互。
  • Delta 共享支持将表共享到任何收件人(开放或 Azure Databricks),收件人可以使用经典计算来访问共享表(Beta 版)。 在帐户控制台中启用 默认存储的增量共享 - 扩展访问 功能。
    • 以下区域不支持此功能: southcentralusuksouthwestus2
    • 所有其他可共享资产只能与同一云上的 Azure Databricks 收件人共享。 收件人必须使用无服务器计算。
  • 启用了分区的表不能共享 Delta。
  • 外部 Iceberg 和 Delta 客户端无法直接访问默认存储上 UC 表的基础元数据、清单列表和数据文件(不支持 FileIO 访问)。 但是,Power BI 和 Tableau 等 BI 工具可以使用 ODBC 和 JDBC 驱动程序访问默认存储上的 Unity 目录表。 外部客户端还可以使用文件 API 访问默认存储上的 Unity 目录卷。
  • 默认存储支持通过 Azure Databricks ODBCJDBC 驱动程序进行外部访问,包括 ODBC 驱动程序的 Cloud Fetch 性能优化,用于查询大型数据集。 但是,如果要从启用了前端专用链接的工作区访问默认存储表,则 ODBC 客户端查询大于 100 MB 将失败,因为默认存储表的 Cloud Fetch 优化目前不支持前端专用链接。