计算系统表参考
重要
此功能目前以公共预览版提供。
本文概述了计算系统表,包括架构和示例查询。 现在有两个群集系统表可用:clusters
和 node_types
。
群集表架构
群集表是一个变化缓慢的维度表,其中包含通用群集和作业群集的群集配置随时间推移而变化的完整历史记录。
群集系统表位于 system.compute.clusters
并具有以下架构:
列名称 | 数据类型 | 说明 | 示例 |
---|---|---|---|
account_id |
string | 创建此群集的帐户的 ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
string | 创建此群集的工作区的 ID。 | 1234567890123456 |
cluster_id |
string | 与此记录关联的群集的 ID。 | 0000-123456-xxxxxxxx |
cluster_name |
string | 群集的用户定义名称。 | My cluster |
owned_by |
string | 群集所有者的用户名。 默认为群集创建者,但可以通过群集 API 进行更改。 | sample_user@email.com |
create_time |
timestamp | 此计算定义的更改的时间戳。 | 2023-01-09 11:00:00.000 |
delete_time |
timestamp | 删除群集时的时间戳。 如果群集未删除,则该值为 null 。 |
2023-01-09 11:00:00.000 |
driver_node_type |
string | 驱动程序节点类型名称。 这与云提供商中的实例类型名称匹配。 | Standard_D16s_v3 |
worker_node_type |
string | 工作器节点类型名称。 这与云提供商中的实例类型名称匹配。 | Standard_D16s_v3 |
worker_count |
bigint | 工作线程数。 仅为固定大小的群集定义。 | 4 |
min_autoscale_workers |
bigint | 设置的最小工作器数。 此字段仅对自动缩放群集有效。 | 1 |
max_autoscale_workers |
bigint | 设置的最大工作器数。 此字段仅对自动缩放群集有效。 | 1 |
auto_termination_minutes |
bigint | 配置的自动终止持续时间。 | 120 |
enable_elastic_disk |
boolean | 自动缩放磁盘启用状态。 | true |
tags |
map | 群集的用户定义标记(不包括默认标记)。 | {"ResourceClass":"SingleNode"} |
cluster_source |
string | 指示群集的创建者:UI 、API 、DLT 、JOB 等。 |
UI |
init_scripts |
数组 | init 脚本的路径集。 | "/Users/example@email.com/files/scripts/install-python-pacakges.sh" |
aws_attributes |
struct | 特定于 AWS 的设置。 | null |
azure_attributes |
struct | 特定于 Azure 的设置。 | { "first_on_demand": "0", "availability": "ON_DEMAND_AZURE", "spot_bid_max_price": "—1" } |
gcp_attributes |
struct | 特定于 GCP 的设置。 此字段将为空。 | null |
driver_instance_pool_id |
string | 如果在实例池上配置了驱动程序,则为实例池 ID。 | 1107-555555-crhod16-pool-DIdnjazB |
worker_instance_pool_id |
string | 如果在实例池上配置了工作器,则为实例池 ID。 | 1107-555555-crhod16-pool-DIdnjazB |
dbr_version |
string | 群集的 Databricks Runtime。 | 14.x-snapshot-scala2.12 |
change_time |
timestamp | 计算定义的更改的时间戳。 | 2023-01-09 11:00:00.000 |
change_date |
date | 更改日期。 用于保留。 | 2023-01-09 |
节点类型表架构
节点类型表通过基本硬件信息捕获当前可用的节点类型。 节点类型系统表位于 system.compute.node_types
并具有以下架构:
列名称 | 数据类型 | 说明 | 示例 |
---|---|---|---|
account_id |
string | 创建此群集的帐户的 ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
node_type_name |
string | 节点类型的唯一标识符。 | Standard_D16s_v3 |
core_count |
double | 实例的 vCPU 数。 | 48.0 |
memory_mb |
long | 实例的总内存。 | 393216 |
gpu_count |
long | 实例的 GPU 数。 | 0 |
已知的限制
- 在 2023 年 10 月 23 日之前标记为已删除的群集不会显示在群集表中。 这可能会导致
system.billing.usage
表中的联接与群集表中的群集记录不匹配。 所有活动群集都已回填。 - 群集表仅包括通用群集和作业群集的记录。 它不包含 Delta Live Tables 群集或 SQL 仓库。
示例查询
可以使用以下示例查询来回答有关群集的常见问题:
注意
这些示例将群集表与 system.billing.usage
表联接在一起。 由于计费记录是跨区域的,而群集记录是特定于区域的,所以计费记录仅匹配你在查询的区域的群集记录。 要查看来自其他区域的记录,请在该区域中执行查询。
将群集记录与最新的计费记录联接
此查询可帮助你了解一段时间内的支出。 将 usage_start_time
更新到最新的计费周期后,它会获取对计费记录的最新更新,以加入群集数据。
在特定的运行期间,每个记录都与群集所有者相关联。 因此,如果群集所有者发生更改,则成本将根据使用群集的时间汇总到正确的所有者。
SELECT
u.record_id,
c.cluster_id,
c.owned_by,
c.change_time,
u.usage_start_time,
u.usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
JOIN (SELECT u.record_id, c.cluster_id, max(c.change_time) change_time
FROM system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and date_trunc('HOUR', c.change_time) <= date_trunc('HOUR', u.usage_start_time)
GROUP BY all) config
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and u.record_id = config.record_id
and c.cluster_id = config.cluster_id
and c.change_time = config.change_time
ORDER BY cluster_id, usage_start_time desc;
将群集的成本归属到群集所有者
如果想要降低计算成本,可以使用此查询来找出帐户中的哪些群集所有者使用了最多的 DBU。
SELECT
u.record_id record_id,
c.cluster_id cluster_id,
max_by(c.owned_by, c.change_time) owned_by,
max(c.change_time) change_time,
any_value(u.usage_start_time) usage_start_time,
any_value(u.usage_quantity) usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and c.change_time <= u.usage_start_time
GROUP BY 1, 2
ORDER BY cluster_id, usage_start_time desc;