コンピューティング システム テーブル参照

この記事では、コンピューティング システム テーブルのリファレンス ガイドを提供します。 これらのテーブルを使用して、アカウント内の従来の汎用コンピューティング、ジョブ コンピューティング、および Lakeflow Spark 宣言パイプライン コンピューティングのアクティビティとメトリックを監視できます。 これらのクラシック コンピューティング テーブルには、次のものが含まれます。

  • clusters: アカウントのコンピューティング構成を記録します。
  • node_types: 現在使用可能なノードの種類ごとに、ハードウェア情報を含む 1 つのレコードが含まれます。
  • node_timeline: コンピューティングの使用率メトリックの分単位のレコードが含まれます。
  • instance_events: クラシック コンピューティング インスタンスの状態遷移をキャプチャします。
  • instance_pools: アカウント内のインスタンス プールの構成を記録します。

クラスター テーブル スキーマ

クラスター テーブルは、時間の経過に伴うコンピューティング構成の完全な履歴を含む、緩やかに変化するディメンション テーブルです。このテーブルには、万能コンピューティング、ジョブ コンピューティング、Lakeflow Spark 宣言パイプライン コンピューティング、パイプライン メンテナンス コンピューティングが含まれています。

テーブル パス: このシステム テーブルは次の場所にあります。 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 文字列 クラスター所有者のユーザー名。 既定値はクラスター作成者ですが、Clusters 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 worker 数。 固定サイズのクラスターに対してのみ定義されます。 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 アレイ init スクリプトのパスのセット。 "/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 timestamp このコンピューティング定義に対する変更のタイムスタンプ。 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 Standard
SINGLE_USER Dedicated

従来のアクセス モードは、次の値で記録されます。

価値 アクセス モード
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 Spark 宣言パイプライン コンピューティング、パイプライン メンテナンス コンピューティング リソースのノード タイムラインをキャプチャします。

テーブル パス: このシステム テーブルは、 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 timestamp レコードの開始時刻 (UTC)。 2024-07-16T12:00:00Z
end_time timestamp レコードの終了時刻 (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
private_ip 文字列 ノードに割り当てられたプライベート IP アドレス。 10.0.0.42

インスタンス イベント テーブル スキーマ

Important

このシステム テーブルは パブリック プレビュー にあります。

インスタンス イベント テーブルは、クラシック コンピューティング インスタンスの状態遷移をキャプチャします。 各行は、1 つのインスタンスの状態変更を表します。 このテーブルには、同じクラウド リージョン内にデプロイされたアカウント内のすべてのワークスペースからのすべての目的のコンピューティング、ジョブ コンピューティング、および Lakeflow Spark 宣言パイプライン コンピューティングのレコードが含まれています。

テーブル パス: このシステム テーブルは、 system.compute.instance_eventsにあります。

列名 データ型 説明
account_id 文字列 このインスタンスが起動されるアカウントの ID。 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id 文字列 このインスタンスが起動されるワークスペースの ID。 1234567890123456
instance_id 文字列 インスタンスの ID。 i-0a1b2c3d4e5f67890
event_time timestamp イベントのタイムスタンプ。 2024-01-15 10:30:00.000
event_type 文字列 イベントの種類。 設定可能な値は INSTANCE_LAUNCHING および STATE_TRANSITION です。 STATE_TRANSITION
instance_pool_id 文字列 インスタンスがプールに属している場合は、インスタンス プール ID。 1107-555555-pool-abcd1234
cluster_id 文字列 このインスタンスが配置されているクラスターの ID。 stateINSTANCE_PLACEDされている場合にのみ設定されます。 詳細については 、cluster_idを参照してください 0000-123456-xxxxxxxx
node_type 文字列 ノードの種類の名前。 これは、クラウド プロバイダーのインスタンスの種類の名前と一致します。 Standard_D16s_v3
state 文字列 インスタンスの状態。 インスタンスの状態を参照してください。 INSTANCE_PLACED
availability_type 文字列 インスタンスの可用性の種類。 指定できる値は、ON_DEMANDSPOT (AWS、Azure) または ON_DEMAND および PREEMPTIBLE (GCP) です。 ON_DEMAND

インスタンスの状態

  • INSTANCE_LAUNCHING: インスタンスが初期化されています。
  • INSTANCE_READY:インスタンスは完全に初期化され、使用できる状態ですが、現在は使用されていません。
  • INSTANCE_PLACED: インスタンスは現在使用中です (クラスターに参加しています)。
  • INSTANCE_TERMINATED: インスタンスが終了します。

cluster_idが設定されるタイミング

cluster_id フィールドは、インスタンスがINSTANCE_PLACED状態の場合にのみ設定されます。 その他のすべての状態 (INSTANCE_LAUNCHINGINSTANCE_READYINSTANCE_TERMINATED) の場合、 cluster_idnull。 この動作は、プールされたインスタンスとプールされていないインスタンスの両方で一貫しています。

instance_events テーブルには、汎用、ジョブ、および Lakeflow Spark 宣言パイプライン コンピューティングの配置イベントのみが含まれます。 SQL ウェアハウスなどの他のワークロードの配置イベントは、この表には含まれません。

インスタンス プールのテーブル スキーマ

Important

このシステム テーブルは パブリック プレビュー にあります。

インスタンス プール テーブルは、時間の経過に伴うインスタンス プール構成の完全な履歴を含む、緩やかに変化するディメンション テーブルです。 構成が変更されると、新しい行が出力され、論理的に前の行が置き換えられます。

テーブル パス: このシステム テーブルは、 system.compute.instance_poolsにあります。

列名 データ型 説明
account_id 文字列 このインスタンス プールが作成されたアカウントの ID。 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id 文字列 このインスタンス プールが作成されたワークスペースの ID。 1234567890123456
instance_pool_id 文字列 インスタンス プールの ID。 1107-555555-pool-abcd1234
change_time timestamp インスタンス プール構成に対する変更のタイムスタンプ。 2024-01-15 10:30:00.000
create_time timestamp インスタンス プールの作成のタイムスタンプ。 2024-01-10 08:00:00.000
delete_time timestamp インスタンス プールの削除のタイムスタンプ。 インスタンス プールが削除されていない場合、値は null されます。 null
instance_pool_name 文字列 インスタンス プールのユーザー定義名。 My instance pool
tags マップ インスタンス プールのユーザー定義タグ (既定のタグは含まれません)。 {"team":"data-engineering"}
node_type 文字列 プール内のインスタンスに使用されるノードの種類。 これは、クラウド プロバイダーのインスタンスの種類の名前と一致します。 Standard_D16s_v3
idle_instance_autotermination_minutes bigint プール キャッシュ内のアイドル状態のインスタンスが非アクティブになった後に自動的に終了する時間 (分)。 120
min_idle_instances bigint インスタンス プールに保持するアイドル状態のインスタンスの最小数。 2
max_capacity bigint クラスターで使用されるインスタンスとアイドル状態のインスタンスの両方を含む、プールに保持する未処理のインスタンスの最大数。 10
enable_elastic_disk ブーリアン ローカル ストレージの自動スケール: 有効にすると、Spark ワーカーのディスク領域が不足しているときに、このプール内のインスタンスによって追加のディスク領域が動的に取得されます。 true
disk_spec 構造体 すべての Spark コンテナーに接続されているディスクの仕様。 {
"disk_type": "PREMIUM_LRS",
"disk_count": 2,
"disk_size": 100
}
preloaded_docker_images アレイ プールにプリロードされたカスタム Docker イメージ。 []
preloaded_spark_version 文字列 定義されている場合は、プール用に事前に読み込まれた Spark イメージ バージョン。 14.3.x-scala2.12
aws_attributes 構造体 AWS で実行されているインスタンス プールに関連する属性。 null
azure_attributes 構造体 Azureで実行されているインスタンス プールに関連する属性。 {
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": -1
}
gcp_attributes 構造体 GCP で実行されているインスタンス プールに関連する属性。 null

既知の制限事項

  • 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;

平均使用率とピーク使用率が最も高いコンピューティング リソースを特定する

平均 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;

各インスタンス プールの最新バージョンを取得する

instance_pools テーブルは SCD2 型であり、既存のレコードを更新する代わりに、変更が行われるたびに新しいレコードが作成されます。 最新バージョンを取得するには、最大の change_timeでエントリを取得します。

SELECT *
FROM system.compute.instance_pools
QUALIFY row_number() OVER (
  PARTITION BY workspace_id, instance_pool_id
  ORDER BY change_time DESC
) = 1;

インスタンスのアイドル時間とアクティブ時間を計算する

このクエリは、 instance_events テーブルからの状態遷移を使用して、各インスタンスの合計アイドル時間とアクティブ時間を計算します。

WITH instance_states AS (
  SELECT
    *,
    event_time AS start_time,
    lead(event_time) OVER (
      PARTITION BY workspace_id, instance_id
      ORDER BY event_time
    ) AS end_time
  FROM system.compute.instance_events
  WHERE event_type IN ('INSTANCE_LAUNCHING', 'STATE_TRANSITION')
)
SELECT
  workspace_id,
  instance_id,
  instance_pool_id,
  sum(if(state = 'INSTANCE_READY',
    TIMESTAMPDIFF(SECOND, start_time, end_time), 0)) / 60 AS idle_minutes,
  sum(if(state = 'INSTANCE_PLACED',
    TIMESTAMPDIFF(SECOND, start_time, end_time), 0)) / 60 AS active_minutes
FROM instance_states
GROUP BY workspace_id, instance_id, instance_pool_id;