計算系統數據表參考
重要
此系統資料表處於公開預覽狀態。 若要存取資料表,必須在system
目錄啟用結構描述。 如需詳細資訊,請參閱啟用系統資料表結構描述。
本文提供計算系統數據表的參考指南。 您可以使用這些資料表來監視帳戶中所有用途和作業計算的活動和計量:
clusters
:記錄您帳戶中的計算組態。node_types
:包含每個目前可用節點類型的單一記錄,包括硬體資訊。node_timeline
:包含計算使用量計量的分鐘記錄。
叢集數據表架構
叢集數據表是一個緩時變維度數據表,其中包含一段時間計算組態的完整歷程記錄,可用於所有用途和作業計算。
數據表路徑:此系統數據表位於 system.compute.clusters
資料行名稱 | 資料類型 | 描述 | 範例 |
---|---|---|---|
account_id |
字串 | 建立此叢集之帳戶的標識碼。 | 23e22ba4-87b9- 4cc2-9770-d10b894b7118 |
workspace_id |
字串 | 建立此叢集的工作區標識碼。 | 1234567890123456 |
cluster_id |
字串 | 此記錄相關聯之叢集的標識碼。 | 0000-123456-crmpt124 |
cluster_name |
字串 | 叢集的使用者定義名稱。 | My cluster |
owned_by |
字串 | 叢集擁有者的用戶名稱。 默認為叢集建立者,但可透過 叢集 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 |
字串 | 驅動程式節點類型名稱。 這符合雲端提供者的實例類型名稱。 | 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 |
boolean | 自動調整磁碟啟用狀態。 | true |
tags |
map | 叢集的使用者定義標籤(不包含預設標籤)。 | {"ResourceClass":"SingleNode"} |
cluster_source |
字串 | 指出叢集的建立者:UI 、、 API 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 |
字串 | 如果驅動程式設定在實例集區之上,則為實例集區標識碼。 | 1107-555555-crhod16-pool-DIdnjazB |
worker_instance_pool_id |
字串 | 如果背景工作角色設定在實例集區之上,則為實例集區標識碼。 | 1107-555555-crhod16-pool-DIdnjazB |
dbr_version |
字串 | 叢集的 Databricks 運行時間。 | 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 |
字串 | 建立此叢集之帳戶的標識碼。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
node_type |
字串 | 節點類型的唯一標識碼。 | Standard_D16s_v3 |
core_count |
double | 實例的 vCPU 數目。 | 48.0 |
memory_mb |
long | 實例的總記憶體。 | 393216 |
gpu_count |
long | 實例的 GPU 數目。 | 0 |
節點時間軸數據表架構
節點時間軸數據表會以分鐘粒度擷取節點層級的資源使用率數據。 每個記錄都包含每個實例指定時間分鐘的數據。
資料表路徑:此系統資料表位於 system.compute.node_timeline
。
資料行名稱 | 資料類型 | 描述 | 範例 |
---|---|---|---|
account_id |
字串 | 執行此計算資源的帳戶標識碼。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
字串 | 執行此計算資源的工作區識別碼。 | 1234567890123456 |
cluster_id |
字串 | 計算資源的識別碼。 | 0000-123456-crmpt124 |
instance_id |
字串 | 特定實例的標識碼。 | i-1234a6c12a2681234 |
start_time |
timestamp | 以UTC為單位記錄的開始時間。 | 2024-07-16T12:00:00Z |
end_time |
timestamp | 以UTC為單位記錄的結束時間。 | 2024-07-16T13:00:00Z |
driver |
boolean | 實例是驅動程式或背景工作節點。 | true |
cpu_user_percent |
double | 在用戶內陸花費 CPU 的百分比。 | 34.76163817234407 |
cpu_system_percent |
double | 核心中 CPU 花費的時間百分比。 | 1.0895310279488264 |
cpu_wait_percent |
double | CPU 等候 I/O 所花費的時間百分比。 | 0.03445157400629276 |
mem_used_percent |
double | 在時間週期內使用的計算記憶體百分比(包括計算上執行的背景進程所使用的記憶體)。 | 45.34858216779041 |
mem_swap_percent |
double | 屬性為記憶體交換的記憶體使用量百分比。 | 0.014648443087939 |
network_sent_bytes |
bigint | 網路流量中傳送的位元組數目。 | 517376 |
network_received_bytes |
bigint | 來自網路流量的接收位元組數目。 | 179234 |
disk_free_bytes_per_mount_point |
map | 依裝入點分組的磁碟使用率。 這隻是在計算執行時布建的暫時記憶體。 | {"/var/lib/lxc":123455551234,"/": 123456789123,"/local_disk0":123412341234} |
node_type |
字串 | 節點類型的名稱。 這會比對雲端提供者的實例類型名稱。 | Standard_D16s_v3 |
已知的限制
- 在 2023 年 10 月 23 日之前標示為已刪除的計算資源不會出現在叢集數據表中。 這可能會導致來自
system.billing.usage
數據表的聯結不符合叢集數據表中的記錄。 所有作用中的計算資源都已回填。 - 這些數據表只包含所有用途和作業計算的記錄。 它們不包含無伺服器計算、差異實時數據表計算或 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;
將成本歸因於叢集擁有者
如果您想要降低計算成本,您可以使用此查詢來找出帳戶中的哪些叢集擁有者使用最多的 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;
識別具有最高平均使用率和尖峰使用率的計算資源
識別具有最高平均 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;