本文介绍 Azure Databricks 中系统表的概念,并重点介绍可用于充分利用系统表数据的资源。
什么是系统表?
系统表是 Azure Databricks 托管的分析存储,包含在目录中的帐户运营数据。 系统表可用于跨帐户观测历史记录。
注意
有关 system.information_schema
的文档,请参阅信息架构。
要求
- 要访问系统表,必须为 Unity Catalog 启用你的工作区。 有关详细信息,请参阅 Access 系统表。
- 以下区域不提供系统表:
- Azure 中国区域
- Azure 政府区域
- 印度西部
- 瑞士西部
可以使用哪些系统表?
目前,Azure Databricks 托管以下系统表:
表 | 说明 | 位置 | 支持流式处理 | 免费保留期 | 包括全局或区域数据 |
---|---|---|---|---|---|
审核日志(公共预览版) | 在区域中包括来自工作区的所有审核事件的记录。 有关可用审核事件的列表,请参阅诊断日志参考。 | system.access.audit |
是 | 365 天 | 区域用于工作区级事件。 全局用于帐户级事件。 |
表世系 | 包括 Unity Catalog 表或路径上每个读取或写入事件的记录。 | system.access.table_lineage |
是 | 365 天 | 区域 |
列血缘关系 | 包括 Unity Catalog 列上每个读取或写入事件的记录(但不包括没有源的事件)。 | system.access.column_lineage |
是 | 365 天 | 区域 |
可计费使用情况 | 包括帐户中所有可计费使用情况的记录。 | system.billing.usage |
是 | 365 天 | 全局 |
定价 | SKU 定价的历史日志。 每次更改 SKU 价格时,都会增加一条记录。 | system.billing.list_prices |
否 | 未定义 | 全局 |
群集 | 一个缓慢变化的维度表,其中包含任何群集随时间变化的计算配置的完整历史记录。 | system.compute.clusters |
是 | 365 天 | 区域 |
节点时间线 | 捕获通用和作业计算资源的利用率指标。 | system.compute.node_timeline |
是 | 90 天 | 区域 |
节点类型 | 通过基本硬件信息捕获当前可用的节点类型。 | system.compute.node_types |
否 | 未定义 | 区域 |
SQL 仓库 (公共预览版) | 包含任何 SQL 仓库随时间推移的配置的完整历史记录。 | system.compute.warehouses |
是 | 365 天 | 区域 |
SQL 仓库事件(公共预览版) | 捕获与 SQL 仓库相关的事件。 例如,启动、停止、运行、纵向扩展和缩减。 | system.compute.warehouse_events |
是 | 365 天 | 区域 |
作业(公共预览版) | 跟踪在帐户中创建的所有作业。 | system.lakeflow.jobs |
是 | 365 天 | 区域 |
作业任务(公共预览版) | 跟踪帐户中运行的所有作业任务。 | system.lakeflow.job_tasks |
是 | 365 天 | 区域 |
作业运行时间线(公共预览版) | 跟踪作业运行的开始和结束时间。 | system.lakeflow. job_run_timeline |
是 | 365 天 | 区域 |
作业任务时间线(公共预览版) | 跟踪作业任务运行的开始和结束时间,及其使用的计算资源。 | system.lakeflow. job_task_run_timeline |
是 | 365 天 | 区域 |
管道 (公开预览版) | 跟踪在帐户中创建的所有管道。 | system.lakeflow.pipelines |
是 | 365 天 | 区域 |
市场漏斗事件(公共预览版) | 包括列表的使用者印象和漏斗数据。 | system.marketplace.listing_ funnel_events |
是 | 365 天 | 区域 |
市场列表访问(公共预览版) | 包含对你的商品列表已完成的请求数据或获取数据事件的消费者信息。 | system.marketplace.listing_ access_events |
是 | 365 天 | 区域 |
预测优化(公共预览版) | 跟踪预测优化功能的操作历史记录。 | system.storage.predictive_ optimization_operations_history |
否 | 180 天 | 区域 |
Databricks 助手事件(公共预览版) | 跟踪发送到 Databricks 助手的用户消息。 | system.access.assistant_events |
否 | 365 天 | 区域 |
查询历史记录(公共预览版) | 捕获在 SQL 仓库和无服务器计算环境中针对笔记本和作业运行的所有查询的记录。 | system.query.history |
否 | 180 天 | 区域 |
洁净室事件(公共预览版) | 捕获与数据清洁房间相关的事件。 | system.access.clean_room_events |
是 | 365 天 | 区域 |
模型服务端点使用情况(公共预览版) | 捕获对模型服务端点及其响应的每个请求的令牌计数。 若要捕获此表中的终结点使用情况,必须在 服务终结点上启用使用情况跟踪。 | system.serving.endpoint_usage 。 |
是 | 90 天 | 区域 |
模型服务端点数据(公共预览版) | 更改缓慢的维度表,用于将每个提供的基础模型的元数据存储在模型服务终结点中。 | system.serving.served_entities |
是 | 365 天 | 区域 |
网络访问事件 (公共预览版) | 记录每次从帐户拒绝 Internet 访问的事件的表。 | system.access.outbound_network |
是 | 365 天 | 区域 |
增量共享数据具体化事件 | 捕获从视图、物化视图和流式表间共享创建的数据物化事件。 | system.sharing.materialization_history |
是 | 365 天 | 区域用于工作区级事件。 |
工作区 (公共预览版) | workspaces_latest表是帐户中所有工作区的元数据变化缓慢的维度表。 | system.access.workspaces_latest |
否 | 未定义 | 全局 |
计费使用情况和定价表可免费使用。 处于公共预览状态的表在预览期间也可以免费使用,但将来可能会收费。
注意
除了上面列出的系统表之外,你可能会在帐户中看到其他系统表。 这些表当前为个人预览版,默认情况下为空。 如果有兴趣使用这些表中的任何一个,请联系 Databricks 帐户团队。
系统表关系
以下实体关系图概述了当前可用的系统表如何相互关联。 此图突出显示了每个表的主键和外键。
访问系统表
由于系统表受 Unity 目录控制,因此需要在帐户中至少有一个启用了 Unity 目录的工作区才能访问帐户的系统表。 系统表包括帐户中所有工作区的数据,但只能从启用了 Unity 目录的工作区访问它们。
元存储需要位于 Unity 目录特权模型版本 1.0 上才能访问系统表。 请参阅 “升级到特权继承”。
注意
marketplace
架构必须手动启用。 默认情况下会启用其他架构。
授予对系统表的访问权限
对系统表的访问受 Unity Catalog 管理。 默认情况下,没有用户可以访问这些系统架构。 若要授予访问权限,同时作为元存储管理员和帐户管理员的用户必须授予对系统架构的 USE
和 SELECT
权限。 请参阅在 Unity Catalog 中管理权限。
系统表为只读,因此不能修改。
注意
如果你的帐户是在 2023 年 11 月 9 日之后创建的,则默认情况下你可能没有元存储管理员。 有关详细信息,请参阅 Unity 目录入门。
系统表是否包含帐户中所有工作区的数据?
系统表包含在同一云区域中部署的帐户中所有工作区的操作数据。 某些表包括全局数据。 有关详细信息,请参阅 可用表的列表。
尽管系统表只能通过 Unity 目录工作区访问,但它们还包括在您的帐户中来自非 Unity 目录工作区的运行数据。
系统表数据存储在哪里?
帐户的系统表数据存储在 Azure Databricks 托管的存储帐户中,该存储帐户与元存储位于同一区域。 该数据会通过增量共享与你安全地共享。
每个表都有一个免费的数据保持期。 有关延长保持期的信息,请联系 Azure Databricks 帐户团队。
系统表位于目录资源管理器中的什么位置?
帐户中的系统表位于名为 system
的目录中,该目录包含在每个 Unity Catalog 元存储中。 在 system
目录中,你将看到架构,例如 access
以及 billing
包含系统表的架构。
流式处理系统表的注意事项
Azure Databricks 使用 Delta Sharing 与客户共享系统表数据。 使用 Delta Sharing 进行流式处理时,请留意以下注意事项:
- 如果你要对系统表使用流式处理,请将
skipChangeCommits
选项设置为true
。 这确保流媒体作业不会因系统表中的删除操作而中断。 请参阅忽略更新和删除。 - Delta Sharing 流式处理不支持
Trigger.AvailableNow
。 它将转换为Trigger.Once
。
如果在流式处理作业中使用触发器并发现它无法同步到最新的系统表版本,Databricks 建议增加作业的调度频率。
从流式处理系统表读取增量更改
spark.readStream.option("skipChangeCommits", "true").table("system.billing.usage")
已知问题
- 可以随时将新列添加到现有系统表。 如果引入了新列,依赖于固定架构的查询可能会中断。 现有列不会更改或删除。 如果要将系统表数据写入另一个目标表,请考虑 启用架构演变。
- 不支持实时监视。 数据全天更新。 如果看不到最近事件的日志,请稍后重新查看。
- 系统
__internal_logging
表架构支持使用 启用了 AI 网关的推理表 来记录外部模型和已预置吞吐量工作负荷的有效负载日志。 此架构对帐户管理员可见,但不能启用,也不应用于客户工作流。
- 若要启用系统表,可能需要授予对系统表 Blob 存储终结点的网络访问权限。 若要查看每个区域的系统表存储终结点的列表,请参阅 存储终结点 IP 地址。
- 系统架构
system.operational_data
和system.lineage
已弃用,并且将包含空表。