本文提供了计算系统表的参考指南。 可以使用这些表监视帐户中非无服务器全用途计算、作业计算和 Lakeflow 声明性管道计算的活动和指标。 计算表包括:
- 
              clusters:记录您帐户中的计算配置。
- 
              node_types:包括每个当前可用节点类型的单个记录,包括硬件信息。
- 
              node_timeline:包括计算利用率指标的逐分钟记录。
群集表架构
群集表是一个变化缓慢的维度表,其中包含各种用途计算、作业计算、Lakeflow 声明性管道计算和管道维护计算的计算配置的完整历史记录。
              表路径:此系统表位于 system.compute.clusters
| 列名称 | 数据类型 | 说明 | 示例 | 
|---|---|---|---|
| account_id | 字符串 | 创建此群集的帐户的 ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 | 
| workspace_id | 字符串 | 创建此群集的工作区的 ID。 | 1234567890123456 | 
| cluster_id | 字符串 | 与此记录关联的群集的 ID。 | 0000-123456-crmpt124 | 
| cluster_name | 字符串 | 群集的用户定义名称。 | My cluster | 
| owned_by | 字符串 | 群集所有者的用户名。 默认为群集创建者,但可以通过群集 API 进行更改。 | sample_user@email.com | 
| create_time | 时间戳 | 此计算定义的更改的时间戳。 | 2023-01-09 11:00:00.000 | 
| delete_time | 时间戳 | 删除群集时的时间戳。 如果群集未删除,则该值为 null。 | 2023-01-09 11:00:00.000 | 
| driver_node_type | 字符串 | 驱动程序节点类型名称。 这与云提供商中的实例类型名称匹配。 | Standard_D16s_v3 | 
| worker_node_type | 字符串 | 工作器节点类型名称。 这与云提供商中的实例类型名称匹配。 | 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 | 布尔 | 自动缩放功能磁盘启用状态。 | true | 
| tags | 地图 | 群集的用户定义标记(不包括默认标记)。 | {"ResourceClass":"SingleNode"} | 
| cluster_source | 字符串 | 群集的来源 UI或API值仅适用于全用途计算。 所有工作计算都记录为JOB。 管道为PIPELINE或PIPELINE_MAINTENANCE。 | UI | 
| init_scripts | 数组 | 初始化脚本的路径集合。 | "/Users/example@email.com/files/scripts/install-python-pacakges.sh" | 
| aws_attributes | 结构体 | 特定于 AWS 的设置。 | null | 
| azure_attributes | 结构体 | Azure 特定设置。 | {"first_on_demand": "0","availability": "ON_DEMAND_AZURE","spot_bid_max_price": "—1"} | 
| gcp_attributes | 结构体 | 特定于 GCP 的设置。 此字段将为空。 | null | 
| driver_instance_pool_id | 字符串 | 如果在实例池上配置了驱动程序,则为实例池 ID。 | 1107-555555-crhod16-pool-DIdnjazB | 
| worker_instance_pool_id | 字符串 | 如果在实例池上配置了工作器,则为实例池 ID。 | 1107-555555-crhod16-pool-DIdnjazB | 
| dbr_version | 字符串 | 群集的 Databricks Runtime。 | 14.x-snapshot-scala2.12 | 
| change_time | 时间戳 | 计算定义的更改的时间戳。 | 2023-01-09 11:00:00.000 | 
| change_date | 日期 | 更改日期。 用于保留。 | 2023-01-09 | 
| data_security_mode | 字符串 | 计算资源的访问模式。 请参阅 访问模式参考。 | USER_ISOLATION | 
| policy_id | 字符串 | 群集计算策略的 ID(如果适用)。 | 1234F35636110A5B | 
访问模式参考
下表翻译了 data_security_mode 列中可能的值。 该列也可以 null 用于某些管道和系统创建的群集。
| 价值 | 访问模式 | 
|---|---|
| USER_ISOLATION | 标准 | 
| SINGLE_USER | 专用 | 
旧访问模式使用以下值进行记录:
| 价值 | 访问模式 | 
|---|---|
| LEGACY_PASSTHROUGH | 凭证传递(共享) | 
| LEGACY_SINGLE_USER | 凭证传递(单用户) | 
| LEGACY_TABLE_ACL | 习惯 | 
| NONE | 无隔离共享 | 
节点类型表架构
节点类型表通过基本硬件信息捕获当前可用的节点类型。
              表路径:此系统表位于 system.compute.node_types.
| 列名称 | 数据类型 | 说明 | 示例 | 
|---|---|---|---|
| account_id | 字符串 | 创建此群集的帐户的 ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 | 
| node_type | 字符串 | 节点类型的唯一标识符。 | Standard_D16s_v3 | 
| core_count | 翻倍 | 实例的 vCPU 数。 | 48.0 | 
| memory_mb | 长整型 | 实例的总内存。 | 393216 | 
| gpu_count | 长整型 | 实例的 GPU 数。 | 0 | 
节点时间线表架构
节点时间线表以分钟粒度捕获节点级资源利用率数据。 每个记录包含每个实例在给定分钟内的数据。 此表记录了您帐户中用于通用计算、作业计算、Lakeflow 声明性管道计算和管道维护的计算资源的节点时间表。
              表路径:此系统表位于 system.compute.node_timeline.
| 列名称 | 数据类型 | 说明 | 示例 | 
|---|---|---|---|
| account_id | 字符串 | 运行此计算资源的帐户的 ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 | 
| workspace_id | 字符串 | 运行此计算资源的工作区的 ID。 | 1234567890123456 | 
| cluster_id | 字符串 | 计算资源的 ID。 | 0000-123456-crmpt124 | 
| instance_id | 字符串 | 特定实例的 ID。 | i-1234a6c12a2681234 | 
| start_time | 时间戳 | 记录的开始时间 (UTC)。 | 2024-07-16T12:00:00Z | 
| end_time | 时间戳 | 记录的结束时间 (UTC)。 | 2024-07-16T13:00:00Z | 
| driver | 布尔 | 实例是驱动程序还是工作器节点。 | true | 
| cpu_user_percent | 翻倍 | 用户空间中 CPU 花费的时间百分比。 | 34.76163817234407 | 
| cpu_system_percent | 翻倍 | 内核中 CPU 花费的时间百分比。 | 1.0895310279488264 | 
| cpu_wait_percent | 翻倍 | CPU 等待 I/O 所花费的时间百分比。 | 0.03445157400629276 | 
| mem_used_percent | 翻倍 | 时间段内使用的计算内存百分比(包括计算上运行的后台进程使用的内存)。 | 45.34858216779041 | 
| mem_swap_percent | 翻倍 | 归因于内存交换的内存使用量百分比。 | 0.014648443087939 | 
| network_sent_bytes | bigint | 在网络流量中发送的字节数。 | 517376 | 
| network_received_bytes | bigint | 来自网络流量的接收字节数。 | 179234 | 
| disk_free_bytes_per_mount_point | 地图 | 按装入点分组的磁盘利用率。 仅当计算正在运行时,才会预配此临时存储。 | {"/var/lib/lxc":123455551234,"/":123456789123,"/local_disk0":123412341234} | 
| node_type | 字符串 | 节点类型的名称。 这将与云提供商中的实例类型名称匹配。 | Standard_D16s_v3 | 
已知限制
- 在 2023 年 10 月 23 日之前标记为已删除的计算资源不会显示在群集表中。 这可能会导致 system.billing.usage表中的联接与群集表中的记录不匹配。 所有活动的计算资源都已回填。
- 这些表仅包含通用和作业计算的记录。 它们不包含无服务器计算、Lakeflow 声明性管道计算或 SQL 仓库的记录。
- 运行不到 10 分钟的节点可能不会显示在 node_timeline表中。
示例查询
可以使用以下示例查询来回答常见问题:
注意
这些示例中的一些将群集表与 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;
确定平均利用率和峰值利用率最高的计算资源
确定具有最高的平均 CPU 利用率和最高的峰值 CPU 利用率的通用和作业计算。
SELECT
        distinct cluster_id,
driver,
avg(cpu_user_percent + cpu_system_percent) as `Avg CPU Utilization`,
max(cpu_user_percent + cpu_system_percent) as `Peak CPU Utilization`,
        avg(cpu_wait_percent) as `Avg CPU Wait`,
        max(cpu_wait_percent) as `Max CPU Wait`,
        avg(mem_used_percent) as `Avg Memory Utilization`,
        max(mem_used_percent) as `Max Memory Utilization`,
avg(network_received_bytes)/(1024^2) as `Avg Network MB Received per Minute`,
avg(network_sent_bytes)/(1024^2) as `Avg Network MB Sent per Minute`
FROM
        node_timeline
WHERE
        start_time >= date_add(now(), -1)
GROUP BY
        cluster_id,
        driver
ORDER BY
        3 desc;