使用系统表监视使用情况
重要
此功能目前以公共预览版提供。 目前没有使用此功能的费用。 将来,某些使用可能会产生费用。
本文介绍 Azure Databricks 中系统表的概念,并重点介绍可用于充分利用系统表数据的资源。
什么是系统表?
系统表是在 system
目录中找到的帐户操作数据的 Azure Databricks 托管的分析存储。 系统表可用于跨帐户观测历史记录。
注意
有关 system.information_schema
的文档,请参阅信息架构。
要求
要访问系统表,必须为 Unity Catalog 启用你的工作区。 有关详细信息,请参阅启用系统表架构。
可以使用哪些系统表?
目前,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 |
是 | 无 | 区域 |
节点类型 | 通过基本硬件信息捕获当前可用的节点类型。 | system.compute.node_types |
否 | 空值 | 区域 |
SQL 仓库事件 | 捕获与 SQL 仓库相关的事件。 例如,启动、停止、运行、纵向扩展和缩减。 | system.compute.warehouse_events |
是 | 365 天 | 区域 |
注意
除了上面列出的系统表之外,你可能会在帐户中看到其他系统表。 这些表目前处于个人预览状态,并且默认情况下为空。 如果有兴趣使用这些表中的任何一个,请联系 Databricks 帐户团队。
启用系统表架构
由于系统表由 Unity Catalog 管理,因此帐户中至少需要启用一个 Unity Catalog 工作区才能启用和访问系统表。 系统表包含帐户中所有工作区的数据,但只能从启用了 Unity Catalog 的工作区访问这些数据。
系统表在架构级别启用。 如果启用了一个系统架构,则启用了该架构中的所有表。 发布新架构时,帐户管理员需要手动启用该架构。
必须由帐户管理员启用系统表。可以使用 SystemSchemas API 启用系统表。
列出可用系统架构
使用以下 curl 命令列出可用的系统架构:
curl -v -X GET -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.databricks.azure.cn/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas"
以下是 GET
命令的一个示例输出:
{"schemas":[{"schema":"access","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"billing","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"information_schema","state":"<AVAILABLE OR EnableCompleted>"}]}
state: AVAILABLE
:系统架构可用,但尚未启用。
state: EnableCompleted
:已启用系统架构,它在目录资源管理器中可见。
启用系统架构
使用以下 curl 命令启用系统架构:
curl -v -X PUT -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.databricks.azure.cn/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
如果成功启用系统架构,则返回结果代码 200
。
如果尝试重新启用系统架构,则返回以下内容:"error_code":"SCHEMA_ALREADY_EXISTS","message":"Schema <schema-name> already exists"
。
禁用系统架构
使用以下 curl 命令禁用系统架构:
curl -v -X DELETE -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.databricks.azure.cn/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
授予对系统表的访问权限
系统表访问权限由 Unity Catalog 管理。 默认情况下,所有用户都无权访问系统表。 要授予访问权限,元存储管理员或其他特权用户必须授予对系统架构的 USE
和 SELECT
权限。 请参阅在 Unity Catalog 中管理权限。
系统表为只读,因此不能修改。
注意
如果你的帐户是在 2023 年 11 月 9 日之后创建的,则默认情况下你可能没有元存储管理员。 有关详细信息,请参阅设置和管理 Unity Catalog。
系统表是否包含帐户中所有工作区的数据?
审核日志和世系表包含在同一云区域中部署的帐户中所有工作区的操作数据。 计费系统表 (system.billing.usage
) 包含帐户中所有工作区的数据,无论工作区部署在哪个区域。
即使只能通过 Unity Catalog 工作区访问系统表,这些表也包含帐户中非 Unity Catalog 工作区的操作数据。
系统表位于何处?
帐户中的系统表位于名为 system
的目录中,该目录包含在每个 Unity Catalog 元存储中。 在 system
目录中,你将看到包含系统表的架构,例如 access
和 billing
。
注意
在系统表公共预览版期间,Azure Databricks 将保留所有系统表数据。
流式处理系统表的注意事项
Delta Sharing 支持访问系统表。 使用 Delta Sharing 进行流式处理时,请留意以下注意事项:
- 如果你要对系统表使用流式处理,请将
skipChangeCommit
选项设置为true
。 这可确保流式处理作业不会因系统表中的删除操作而中断。 请参阅忽略更新和删除。 - Delta Sharing 流式处理不支持
Trigger.AvailableNow
。 它将转换为Trigger.Once
。 - 如果在流式处理作业中使用触发器并发现作业无法赶上最新的系统表版本,Databricks 建议增加作业的计划频率。
已知问题
- 目前不支持实时监视。 数据全天更新。 如果看不到最近事件的日志,请稍后查看。
- 若要启用系统表,可能需要授予对系统表 Blob 存储终结点的网络访问权限。 若要查看每个区域的系统表存储终结点的列表,请参阅存储终结点 IP 地址。
- 系统架构
system.operational_data
和system.lineage
已弃用,并且将包含空表。