コンピュート システムテーブルリファレンス

プレビュー

この機能はパブリックプレビュー段階です。

この記事では、コンピュート テーブル システムのリファレンス ガイドを提供します。 これらのテーブルを使用して、アカウント内の汎用およびジョブ コンピュートのアクティビティとメトリクスを監視できます。

  • clusters: コンピュート設定をアカウントに記録します。

  • node_types: ハードウェア情報を含む、現在使用可能なノード タイプごとに 1 つのレコードが含まれます。

  • node_timeline: コンピュートの使用状況メトリクスの分単位の記録が含まれます。

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

クラスター テーブルは、汎用およびジョブ コンピュートの長期にわたるコンピュート構成の完全な履歴を含む、ゆっくりと変化するディメンション テーブルです。

クラスター システムテーブルは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

ドライバー ノードの種類の名前。 これは、クラウド プロバイダーのインスタンス タイプ名と一致します。

i3.xlarge

worker_node_type

string

ワーカー ノード タイプ名。 これは、クラウド プロバイダーのインスタンス タイプ名と一致します。

i3.xlarge

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

string

クラスターの作成者を示します: UIAPIJOBなど。

UI

init_scripts

array

init スクリプトのパスのセット。

"/Users/example@email.com /files/scripts/install-python-pacakges.sh"

aws_attributes

構造体

AWS 固有の設定。

{ "ebs_volume_count": null, "availability": "SPOT_WITH_FALLBACK", "first_on_demand": "0", "spot_bid_price_percent": "100" }

azure_attributes

構造体

Azure 固有の設定。

null

gcp_attributes

構造体

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

日付

日付を変更します。 保持に使用されます。

2023-01-09

ノード・タイプ・テーブル・スキーマ

ノード タイプ テーブルには、現在使用可能なノード タイプとその基本的なハードウェア情報が記録されます。 ノード タイプ システム テーブルはsystem.compute.node_typesにあり、次のスキーマを持ちます。

列名

データ型

説明

account_id

string

このクラスターが作成されたアカウントの ID。

23e22ba4-87b9-4cc2-9770-d10b894b7118

node_type_name

string

ノード・タイプの一意の識別子。

i3.xlarge

core_count

double

インスタンスの vCPU の数。

48.0

memory_mb

ロング

インスタンスの合計メモリ。

393216

gpu_count

ロング

インスタンスの GPU の数。

0

ノード タイムライン テーブル スキーマ

ノード タイムライン テーブルは、ノード レベルのリソース使用率データを分単位の粒度でキャプチャします。 各レコードには、インスタンスごとに特定の時間分のデータが含まれています。

ノード タイムライン システム テーブルはsystem.compute.node_timelineにあり、次のスキーマがあります。

列名

データ型

説明

account_id

string

このコンピュート リソースが実行されているアカウントの ID。

23e22ba4-87b9-4cc2-9770-d10b894b7118

workspace_id

string

このコンピュート リソースが実行されているワークスペースの ID。

1234567890123456

cluster_id

string

コンピュート リソースの ID。

0000-123456-crmpt124

instance_id

string

特定のインスタンスの ID。

i-1234a6c12a2681234

start_time

timestamp

レコードの開始時刻。

2024-07-16T12:00:00Z

end_time

timestamp

レコードの終了時刻。

2024-07-16T13:00:00Z

driver

ブーリアン

インスタンスがドライバーノードかワーカーノードか。

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

マップ

マウント・ポイント別にグループ化されたディスク使用率。 これは、コンピュートの実行中のみの一時的なストレージ プロビジョニングです。

{"/var/lib/lxc":123455551234,"/":

123456789123,"/local_disk0":123412341234}

node_type

string

ノードの種類の名前。 これは、クラウド プロバイダーのインスタンス タイプ名と一致します。

i3.xlarge

既知の制限事項

  • 2023 年 10 月 23 日より前に削除済みとしてマークされたコンピュート リソースは、クラスター テーブルに表示されません。 これにより、 system.billing.usageテーブルからの結合がクラスター テーブルのレコードと一致しなくなる可能性があります。 すべてのアクティブなコンピュート リソースがバックフィルされました。

  • これらのテーブルには、汎用およびジョブ コンピュートのレコードのみが含まれます。 これらには、サーバーレス コンピュート、 Delta Live Tablesコンピュート、または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;