Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ein Referenzhandbuch für die Computer-Systemtabellen. Sie können diese Tabellen verwenden, um die Aktivität und Metriken der klassischen All-Purpose Compute, Jobs Compute und Lakeflow Spark Declarative Pipelines in Ihrem Konto zu überwachen. Diese klassischen Computetabellen umfassen:
-
clusters: zeichnet Computekonfigurationen in Ihrem Konto auf. -
node_types: enthält einen einzelnen Datensatz für jeden der derzeit verfügbaren Knotentypen, einschließlich Hardwareinformationen. -
node_timeline: Enthält Minutenprotokolle der Nutzungsmetriken Ihres Computers. -
instance_events: Erfasst Zustandsübergänge klassischer Computeinstanzen. -
instance_pools: Zeichnet Instanzpoolkonfigurationen in Ihrem Konto auf.
Clustertabellenschema
Die Clustertabelle ist eine sich langsam ändernde Dimensionstabelle, die den vollständigen Verlauf der Berechnungskonfigurationen im Laufe der Zeit für die universelle Berechnung, die Job-Berechnung, die Lakeflow Spark Declarative Pipelines-Berechnung und die Pipeline-Wartungsberechnung enthält.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.compute.clusters
| Spaltenname | Datentyp | Beschreibung | Beispiel |
|---|---|---|---|
account_id |
Zeichenfolge | ID des Kontos, auf dem dieser Cluster erstellt wurde. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
Zeichenfolge | ID des Arbeitsbereichs, in dem dieser Cluster erstellt wurde. | 1234567890123456 |
cluster_id |
Zeichenfolge | ID des Clusters, für den dieser Datensatz zugeordnet ist. | 0000-123456-crmpt124 |
cluster_name |
Zeichenfolge | Benutzerdefinierter Name für den Cluster. | My cluster |
owned_by |
Zeichenfolge | Benutzername des Clusterbesitzers. Standardmäßig auf den Clusterersteller eingestellt, kann jedoch über die Clusters API geändert werden. | sample_user@email.com |
create_time |
Zeitstempel | Zeitstempel der Änderung an dieser Berechnungsdefinition. | 2023-01-09 11:00:00.000 |
delete_time |
Zeitstempel | Zeitstempel des Zeitpunkts, zu dem der Cluster gelöscht wurde. Der Wert ist null, wenn der Cluster nicht gelöscht wird. |
2023-01-09 11:00:00.000 |
driver_node_type |
Zeichenfolge | Name des Treiberknotentyps. Dies entspricht dem Namen des Instanztyps vom Cloudanbieter. | Standard_D16s_v3 |
worker_node_type |
Zeichenfolge | Name des Arbeitsknotentyps. Dies entspricht dem Namen des Instanztyps vom Cloudanbieter. | Standard_D16s_v3 |
worker_count |
BIGINT | Anzahl der Arbeiter. Nur für Cluster mit fester Größe definiert. | 4 |
min_autoscale_workers |
BIGINT | Die festgelegte Mindestanzahl von Mitarbeitern. Dieses Feld ist nur für automatische Skalierungscluster gültig. | 1 |
max_autoscale_workers |
BIGINT | Die maximale Anzahl der Worker. Dieses Feld ist nur für automatische Skalierungscluster gültig. | 1 |
auto_termination_minutes |
BIGINT | Die konfigurierte Autoterminierungsdauer. | 120 |
enable_elastic_disk |
Boolescher Wert | Status der Aktivierung der automatischen Skalierung des Datenträgers. | true |
tags |
Karte | Benutzerdefinierte Tags für den Cluster (umfasst keine Standardtags). | {"ResourceClass":"SingleNode"} |
cluster_source |
Zeichenfolge | Quelle des Clusters. Die UI- oder API-Werte gelten nur für die universelle Berechnung. Alle Auftragsberechnungen werden protokolliert als JOB. Pipelines sind PIPELINE oder PIPELINE_MAINTENANCE. |
UI |
init_scripts |
Array | Satz von Pfaden für Init-Skripts. | "/Users/example@email.com/files/scripts/install-python-pacakges.sh" |
aws_attributes |
Struktur | AWS-spezifische Einstellungen. | null |
azure_attributes |
Struktur | Azure-spezifischen Einstellungen. | {"first_on_demand": "0","availability": "ON_DEMAND_AZURE","spot_bid_max_price": "—1"} |
gcp_attributes |
Struktur | GCP-spezifische Einstellungen. Dieses Feld bleibt leer. | null |
driver_instance_pool_id |
Zeichenfolge | Instanzpool-ID, wenn der Treiber über einem Instanzpool konfiguriert ist. | 1107-555555-crhod16-pool-DIdnjazB |
worker_instance_pool_id |
Zeichenfolge | Instanzpool-ID, wenn der Worker über einem Instanzpool konfiguriert ist. | 1107-555555-crhod16-pool-DIdnjazB |
dbr_version |
Zeichenfolge | Die Databricks-Laufzeit des Clusters. | 14.x-snapshot-scala2.12 |
change_time |
Zeitstempel | Zeitstempel der Änderung an der Computedefinition. | 2023-01-09 11:00:00.000 |
change_date |
Datum | Datum ändern. Wird für die Aufbewahrung verwendet. | 2023-01-09 |
data_security_mode |
Zeichenfolge | Der Zugriffsmodus der Computeressource. Siehe Access-Modusreferenz. | USER_ISOLATION |
policy_id |
Zeichenfolge | ID der Rechenrichtlinie des Clusters, falls zutreffend. | 1234F35636110A5B |
Zugriffsmodusreferenz
In der folgenden Tabelle werden die möglichen Werte in der data_security_mode Spalte übersetzt. Die Spalte kann auch für bestimmte Pipelines und vom System erstellte Cluster sein null .
| Wert | Zugriffsmodus |
|---|---|
USER_ISOLATION |
Norm |
SINGLE_USER |
Dediziert |
Die älteren Zugriffsmodi werden mit den folgenden Werten aufgezeichnet:
| Wert | Zugriffsmodus |
|---|---|
LEGACY_PASSTHROUGH |
Passthrough für Anmeldeinformationen (gemeinsam genutzt) |
LEGACY_SINGLE_USER |
Passthrough für Anmeldedaten (für einen einzelnen Benutzer) |
LEGACY_TABLE_ACL |
Kundenspezifisch |
NONE |
Keine geteilte Isolation |
Tabellenschema für Knotentypen
Die Knotentyp-Tabelle erfasst die derzeit verfügbaren Knotentypen mit ihren grundlegenden Hardwareinformationen.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.compute.node_types.
| Spaltenname | Datentyp | Beschreibung | Beispiel |
|---|---|---|---|
account_id |
Zeichenfolge | ID des Kontos, auf dem dieser Cluster erstellt wurde. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
node_type |
Zeichenfolge | Eindeutige ID für diesen Knotentyp. | Standard_D16s_v3 |
core_count |
doppelt | Anzahl der vCPUs für die Instanz. | 48.0 |
memory_mb |
lang | Gesamtspeicher für die Instanz. | 393216 |
gpu_count |
lang | Anzahl der GPUs für die Instanz. | 0 |
Tabellenschema für Knotenzeitachsen
In der Knotenzeitleistentabelle wird der Ressourcenverbrauch auf Knotenebene mit einer Minutenauflösung erfasst. Jeder Datensatz enthält Daten für eine bestimmte Minute pro Instanz. In dieser Tabelle werden Zeitachsen der Knoten für die Allzweck-Berechnungs-, Auftrags-Berechnungs-, Lakeflow Spark Declarative Pipelines-Berechnungs- und Pipeline-Wartungs-Berechnungsressourcen in Ihrem Konto erfasst.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.compute.node_timeline.
| Spaltenname | Datentyp | Beschreibung | Beispiel |
|---|---|---|---|
account_id |
Zeichenfolge | ID des Kontos, unter dem diese Computeressource ausgeführt wird | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
Zeichenfolge | ID des Arbeitsbereichs, in dem diese Computeressource ausgeführt wird | 1234567890123456 |
cluster_id |
Zeichenfolge | ID der Computeressource | 0000-123456-crmpt124 |
instance_id |
Zeichenfolge | ID der spezifischen Instanz | i-1234a6c12a2681234 |
start_time |
Zeitstempel | UTC-Startzeit der Aufzeichnung | 2024-07-16T12:00:00Z |
end_time |
Zeitstempel | Endzeit des Protokolls in UTC. | 2024-07-16T13:00:00Z |
driver |
Boolescher Wert | Gibt an, ob es sich bei der Instanz um einen Treiber- oder Workerknoten handelt. | true |
cpu_user_percent |
doppelt | Prozentsatz der Zeit, die die CPU in der Benutzerumgebung aufgewendet hat | 34.76163817234407 |
cpu_system_percent |
doppelt | Prozentsatz der Zeit, die die CPU im Kernel aufgewendet hat | 1.0895310279488264 |
cpu_wait_percent |
doppelt | Prozentsatz der Zeit, die die CPU für das Warten auf E/A aufgewendet hat | 0.03445157400629276 |
mem_used_percent |
doppelt | Prozentsatz des Arbeitsspeichers des Computes, der während des Zeitraums verwendet wurde (einschließlich des Arbeitsspeichers, der von Hintergrundprozessen verwendet wird, die auf der Berechnung ausgeführt werden). | 45.34858216779041 |
mem_swap_percent |
doppelt | Prozentsatz der Speicherauslastung durch Speicherswap. | 0.014648443087939 |
network_sent_bytes |
BIGINT | Anzahl Bytes, die über Netzwerkdatenverkehr gesendet wurden | 517376 |
network_received_bytes |
BIGINT | Anzahl Bytes, die über Netzwerkdatenverkehr empfangen wurden | 179234 |
disk_free_bytes_per_mount_point |
Karte | Datenträgerauslastung gruppiert nach Bereitstellungspunkt. Dies ist kurzlebiger Speicher, der nur während der Computeausführung bereitgestellt wird. | {"/var/lib/lxc":123455551234,"/":123456789123,"/local_disk0":123412341234} |
node_type |
Zeichenfolge | Name des Knotentyps. Er entspricht dem Namen des Instanztyps vom Cloudanbieter. | Standard_D16s_v3 |
private_ip |
Zeichenfolge | Die private IP-Adresse, die dem Knoten zugewiesen ist. | 10.0.0.42 |
Instanzereignisse-Tabellenschema
Important
Diese Systemtabelle befindet sich in der Public Preview.
Die Instanzereignissetabelle erfasst Zustandsübergänge von klassischen Computeinstanzen. Jede Zeile stellt eine Zustandsänderung für eine einzelne Instanz dar. Diese Tabelle enthält Datensätze für die berechnungs-, Auftragsberechnung und Lakeflow Spark Declarative Pipelines, die aus allen Arbeitsbereichen in Ihrem Konto berechnet werden, die in derselben Cloudregion bereitgestellt wurden.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.compute.instance_events.
| Spaltenname | Datentyp | Beschreibung | Beispiel |
|---|---|---|---|
account_id |
Zeichenfolge | ID des Kontos, auf dem diese Instanz gestartet wird. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
Zeichenfolge | ID des Arbeitsbereichs, in dem diese Instanz gestartet wird. | 1234567890123456 |
instance_id |
Zeichenfolge | ID der Instanz. | i-0a1b2c3d4e5f67890 |
event_time |
Zeitstempel | Zeitstempel des Ereignisses | 2024-01-15 10:30:00.000 |
event_type |
Zeichenfolge | Ereignistyp. Mögliche Werte sind INSTANCE_LAUNCHING und STATE_TRANSITION. |
STATE_TRANSITION |
instance_pool_id |
Zeichenfolge | Instanzpool-ID, wenn die Instanz zu einem Pool gehört. | 1107-555555-pool-abcd1234 |
cluster_id |
Zeichenfolge | Die ID des Clusters, auf dem diese Instanz platziert wird. Wird nur ausgefüllt, wenn stateINSTANCE_PLACED ist. Weitere Informationen finden Sie unter cluster_id Details. |
0000-123456-xxxxxxxx |
node_type |
Zeichenfolge | Name des Knotentyps. Dies entspricht dem Namen des Instanztyps vom Cloudanbieter. | Standard_D16s_v3 |
state |
Zeichenfolge | Instanzstatus. Siehe Instanzstatus. | INSTANCE_PLACED |
availability_type |
Zeichenfolge | Verfügbarkeitstyp der Instanz. Mögliche Werte sind ON_DEMAND und SPOT (AWS, Azure) oder ON_DEMAND und PREEMPTIBLE (GCP). |
ON_DEMAND |
Instanzstatus
-
INSTANCE_LAUNCHING: Die Instanz wird initialisiert. -
INSTANCE_READY: Die Instanz wird vollständig initialisiert und kann verwendet werden, wird aber derzeit nicht verwendet. -
INSTANCE_PLACED: Die Instanz wird derzeit verwendet (einem Cluster beigetreten). -
INSTANCE_TERMINATED: Die Instanz wird beendet.
Wann wird cluster_id aufgefüllt?
Das cluster_id Feld wird nur aufgefüllt, wenn sich die Instanz im INSTANCE_PLACED Zustand befindet. Für alle anderen Zustände (INSTANCE_LAUNCHING, INSTANCE_READY, INSTANCE_TERMINATED) cluster_id ist null. Dieses Verhalten ist für poolierte und nicht poolierte Instanzen konsistent.
Die instance_events Tabelle enthält nur Platzierungsereignisse für alle Zwecke, Aufträge und Lakeflow Spark Declarative Pipelines. Platzierungsereignisse für andere Workloads, z. B. SQL-Lagerhäuser, sind in dieser Tabelle nicht enthalten.
Instanzpooltabellenschema
Important
Diese Systemtabelle befindet sich in der Public Preview.
Die Instanzpooltabelle ist eine langsam ändernde Dimensionstabelle, die den vollständigen Verlauf der Instanzpoolkonfigurationen im Laufe der Zeit enthält. Wenn sich eine Konfiguration ändert, wird eine neue Zeile ausgegeben, logisch wird die vorherige Zeile ersetzt.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.compute.instance_pools.
| Spaltenname | Datentyp | Beschreibung | Beispiel |
|---|---|---|---|
account_id |
Zeichenfolge | ID des Kontos, für das dieser Instanzpool erstellt wurde. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
Zeichenfolge | ID des Arbeitsbereichs, in dem dieser Instanzpool erstellt wurde. | 1234567890123456 |
instance_pool_id |
Zeichenfolge | ID des Instanzpools. | 1107-555555-pool-abcd1234 |
change_time |
Zeitstempel | Zeitstempel der Änderung an der Instanzpoolkonfiguration. | 2024-01-15 10:30:00.000 |
create_time |
Zeitstempel | Zeitstempel der Instanzpoolerstellung. | 2024-01-10 08:00:00.000 |
delete_time |
Zeitstempel | Zeitstempel des Instanzpoollöschvorgangs. Der Wert ist null , wenn der Instanzpool nicht gelöscht wird. |
null |
instance_pool_name |
Zeichenfolge | Benutzerdefinierter Name des Instanzpools. | My instance pool |
tags |
Karte | Benutzerdefinierte Tags für den Instanzpool (enthält keine Standardtags). | {"team":"data-engineering"} |
node_type |
Zeichenfolge | Knotentyp, der für Instanzen im Pool verwendet wird. Dies entspricht dem Namen des Instanztyps vom Cloudanbieter. | Standard_D16s_v3 |
idle_instance_autotermination_minutes |
BIGINT | Die Anzahl der Minuten, die leerlauffähige Instanzen im Poolcache automatisch beendet werden, nachdem sie inaktiv sind. | 120 |
min_idle_instances |
BIGINT | Minimale Anzahl von Idle-Instanzen, die im Instanz Pool verbleiben sollen. | 2 |
max_capacity |
BIGINT | Maximale Anzahl der ausstehenden Instanzen, die im Pool verbleiben sollen, einschließlich der von Clustern verwendeten Instanzen und der Instanzen im Leerlauf. | 10 |
enable_elastic_disk |
Boolescher Wert | Automatischer lokaler Speicher: Wenn diese Option aktiviert ist, erwerben Instanzen in diesem Pool dynamisch zusätzlichen Speicherplatz, wenn Spark-Worker wenig Speicherplatz auf dem Datenträger ausführen. | true |
disk_spec |
Struktur | Die Spezifikation der Datenträger, die an alle Spark-Container angefügt sind. | {"disk_type": "PREMIUM_LRS","disk_count": 2,"disk_size": 100} |
preloaded_docker_images |
Array | Benutzerdefinierte Docker-Images, die im Pool vorinstalliert sind. | [] |
preloaded_spark_version |
Zeichenfolge | Vorabgeladene Spark-Imageversion für den Pool, falls definiert. | 14.3.x-scala2.12 |
aws_attributes |
Struktur | Attribute im Zusammenhang mit Instanzpools, die auf AWS ausgeführt werden. | null |
azure_attributes |
Struktur | Attribute im Zusammenhang mit Instanzpools, die auf Azure ausgeführt werden. | {"availability": "ON_DEMAND_AZURE","spot_bid_max_price": -1} |
gcp_attributes |
Struktur | Attribute im Zusammenhang mit Instanzpools, die auf GCP ausgeführt werden. | null |
Bekannte Einschränkungen
- Clusterressourcen, die vor dem 23. Oktober 2023 als gelöscht markiert wurden, sind nicht in der Clustertabelle enthalten. Dies kann dazu führen, dass Verknüpfungen aus der Tabelle
system.billing.usagekeinen Clusterdatensätzen in der Clustertabelle entsprechen. Alle aktiven Rechenressourcen wurden nachgefüllt. - Diese Tabellen enthalten nur Datensätze für Allzweck- und jobbezogene Computingressourcen. Sie enthalten keine Datensätze für serverlose Compute- oder SQL-Lagerhäuser.
- Knoten, die weniger als 10 Minuten laufen, werden möglicherweise nicht in der Tabelle
node_timelineangezeigt.
Beispielabfragen
Sie können die folgenden Beispielabfragen verwenden, um häufig gestellte Fragen zu beantworten:
- Verknüpfen von Clusterdatensätzen mit den neuesten Abrechnungsdatensätzen
- Ermitteln der Computeressourcen mit der höchsten durchschnittlichen Auslastung und der höchsten Auslastung
- Abrufen der neuesten Version jedes Instanzpools
- Berechnen des Leerlaufs und der aktiven Zeit der Instanz
Hinweis
In einigen dieser Beispiele wird die Clustertabelle mit der Tabelle system.billing.usage verknüpft. Da Abrechnungsdatensätze regionsübergreifend und Clusterdatensätze regionsspezifisch sind, stimmen Abrechnungsdatensätze nur mit Clusterdatensätzen für die Region überein, in der Sie abfragen. Um Datensätze aus einer anderen Region anzuzeigen, führen Sie die Abfrage bitte in dieser Region aus.
Verbinden von Clusterdatensätzen mit den neuesten Abrechnungsdatensätzen
Diese Abfrage kann Ihnen helfen, die Ausgaben im Laufe der Zeit zu verstehen. Nachdem Sie den usage_start_time auf den aktuellen Abrechnungszeitraum aktualisiert haben, erfasst er die neuesten Aktualisierungen der Abrechnungsdaten, um die Clusterdaten zu verknüpfen.
Jeder Datensatz wird während dieser bestimmten Ausführung dem Clusterbesitzer zugeordnet. Wenn sich der Clusterbesitzer ändert, werden die Kosten basierend auf dem Zeitpunkt der Verwendung des Clusters dem richtigen Besitzer zugeordnet.
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;
Identifizieren Sie die Computerressourcen mit der höchsten durchschnittlichen Auslastung und Spitzenauslastung
Ermitteln Sie die universellen und auftragsbezogenen Rechenressourcen mit der höchsten durchschnittlichen CPU-Auslastung und der höchsten Spitzen-CPU-Auslastung.
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;
Abrufen der neuesten Version jedes Instanzpools
Die instance_pools Tabelle ist SCD2-Typ, wobei anstelle vorhandener Datensätze immer ein neuer Datensatz erstellt wird, wenn eine Änderung vorgenommen wird. Um die neueste Version zu erhalten, nehmen Sie den Eintrag mit der größten 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;
Berechnen des Leerlaufs und der aktiven Zeit der Instanz
Diese Abfrage berechnet die Gesamtlaufzeit und die aktive Zeit für jede Instanz mithilfe von Zustandsübergängen aus der instance_events Tabelle.
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;