Partager via


Informations de référence sur les tables système de calcul

Important

Cette table système est en préversion publique. Pour accéder à la table, le schéma doit être activé dans votre catalogue system. Pour plus d’informations, consultez Activer les schémas de table système.

Cet article vous fournit un guide de référence pour les tables de système de calcul. Vous pouvez utiliser ces tables pour surveiller l’activité et les mesures de calcul à usage unique et de travaux dans votre compte :

  • clusters : enregistre les configurations de calcul dans votre compte.
  • node_types : inclut un enregistrement unique pour chacun des types de nœuds actuellement disponibles, y compris les informations matérielles.
  • node_timeline : inclut des enregistrements minute par minute des mesures d’utilisation de votre calcul.

Schéma de table de cluster

La table de cluster est une table de dimension à variation lente qui contient l’historique complet des configurations de calcul au fil du temps pour les clusters universels et les clusters de travaux.

Chemin d’accès de la table : cette table système se trouve à l’emplacement system.compute.clusters

Nom de la colonne Type de données Description Exemple :
account_id string ID du compte où ce cluster a été créé. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id string ID de l’espace de travail où ce cluster a été créé. 1234567890123456
cluster_id string ID du cluster pour lequel cet enregistrement est associé. 0000-123456-crmpt124
cluster_name string Nom du cluster défini par l’utilisateur. My cluster
owned_by string Nom d’utilisateur du propriétaire du cluster. Il s’agit du créateur du cluster par défaut, mais vous pouvez le changer avec l’API Clusters. sample_user@email.com
create_time timestamp Horodatage du changement de cette définition de calcul. 2023-01-09 11:00:00.000
delete_time timestamp Horodatage de la suppression du cluster. La valeur est null si le cluster n’est pas supprimé. 2023-01-09 11:00:00.000
driver_node_type string Nom du type de nœud pilote. Correspond au nom du type d’instance du fournisseur de cloud. Standard_D16s_v3
worker_node_type string Nom du type de nœud worker. Correspond au nom du type d’instance du fournisseur de cloud. Standard_D16s_v3
worker_count bigint Nombre de workers. Défini uniquement pour les clusters de taille fixe. 4
min_autoscale_workers bigint Nombre de workers minimal défini. Ce champ est valide uniquement pour les clusters avec mise à l’échelle automatique. 1
max_autoscale_workers bigint Nombre de workers maximal. Ce champ est valide uniquement pour les clusters avec mise à l’échelle automatique. 1
auto_termination_minutes bigint Durée de fin automatique configurée. 120
enable_elastic_disk boolean État d’activation du disque avec mise à l’échelle automatique. true
tags map Balises définies par l’utilisateur pour le cluster (n’inclut pas les balises par défaut). {"ResourceClass":"SingleNode"}
cluster_source string Indique le créateur du cluster : UI, API, JOB, etc. UI
init_scripts tableau Ensemble de chemins des scripts init. "/Users/example@email.com
/files/scripts/install-python-pacakges.sh"
aws_attributes struct Paramètres propres à AWS. null
azure_attributes struct Paramètres propres à Azure. {
"first_on_demand": "0",
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": "—1"
}
gcp_attributes struct Paramètres propres à GCP. Ce champ est vide. null
driver_instance_pool_id string ID du pool d’instances si le pilote est configuré par-dessus un pool d’instances. 1107-555555-crhod16-pool-DIdnjazB
worker_instance_pool_id string ID du pool d’instances si le worker est configuré par-dessus un pool d’instances. 1107-555555-crhod16-pool-DIdnjazB
dbr_version string Databricks Runtime du cluster. 14.x-snapshot-scala2.12
change_time timestamp Horodatage du changement de la définition de calcul. 2023-01-09 11:00:00.000
change_date date Date de changement. Utilisé pour la conservation des données. 2023-01-09

Schéma de la table des types de nœud

La table des types de nœud capture les types de nœud actuellement disponibles avec leurs informations matérielles de base.

Chemin d’accès de la table : cette table système se trouve à l’emplacement system.compute.node_types.

Nom de la colonne Type de données Description Exemple :
account_id string ID du compte où ce cluster a été créé. 23e22ba4-87b9-4cc2-9770-d10b894b7118
node_type string Identificateur unique de ce type de nœud. Standard_D16s_v3
core_count double Nombre de processeurs virtuels de l’instance. 48.0
memory_mb long Mémoire totale de l’instance. 393216
gpu_count long Nombre de processeurs graphiques de l’instance. 0

Schéma de la table de chronologie de nœud

La table de chronologie de nœud capture les données d’utilisation des ressources au niveau du nœud à une granularité minute. Chaque enregistrement contient des données pendant une minute donnée de temps par instance.

Chemin d’accès de la table : cette table système se trouve à l’emplacement system.compute.node_timeline.

Nom de la colonne Type de données Description Exemple :
account_id string ID du compte dans lequel cette ressource de calcul est en cours d’exécution. 23e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id string ID de l’espace de travail dans lequel cette ressource de calcul est en cours d’exécution. 1234567890123456
cluster_id string ID de la ressource de calcul. 0000-123456-crmpt124
instance_id string ID de l’instance spécifique. i-1234a6c12a2681234
start_time timestamp Heure de début de l’enregistrement, en UTC. 2024-07-16T12:00:00Z
end_time timestamp Heure de fin de l’enregistrement, en UTC. 2024-07-16T13:00:00Z
driver booléen Indique si l’instance est un nœud de pilote ou worker. true
cpu_user_percent double Pourcentage de temps passé par le processeur dans le pays d’utilisateur. 34.76163817234407
cpu_system_percent double Pourcentage de temps passé par le processeur dans le noyau. 1.0895310279488264
cpu_wait_percent double Pourcentage de temps passé par le processeur en attente d’E/S. 0.03445157400629276
mem_used_percent double Pourcentage de la mémoire de calcul qui a été utilisé pendant la période (y compris la mémoire utilisée par les processus en arrière-plan s’exécutant sur le calcul). 45.34858216779041
mem_swap_percent double Pourcentage d’utilisation de la mémoire attribuée à l’échange de mémoire. 0.014648443087939
network_sent_bytes bigint Nombre d’octets envoyés dans le trafic réseau. 517376
network_received_bytes bigint Nombre d’octets reçus du trafic réseau. 179234
disk_free_bytes_per_mount_point map Utilisation du disque groupée par point de montage. Il s’agit d’un stockage éphémère approvisionné uniquement pendant l’exécution du calcul. {"/var/lib/lxc":123455551234,"/":

123456789123,"/local_disk0":123412341234}
node_type string Le nom du type de nœud. Ceci correspondra au nom du type d’instance du fournisseur de cloud. Standard_D16s_v3

Limitations connues

  • Les ressources de calcul qui ont été marqués comme supprimés avant le 23 octobre 2023 ne sont pas indiquées dans la table des clusters. Cela peut entraîner des jointures à partir de la table system.billing.usage qui ne correspondent pas aux enregistrements dans la table des clusters. Toutes les ressources de calcul actives ont été renvoyées.
  • Ces tables comprennent uniquement les enregistrements des calculs universels et de travaux. Ils ne contiennent pas d’enregistrements pour le calcul serverless, le calcul Delta Live Tables ou les entrepôts SQL.
  • Les nœuds exécutés pendant moins de 10 minutes peuvent ne pas apparaître dans la table node_timeline.

Exemples de requêtes

Vous pouvez utiliser les exemples de requêtes suivants pour répondre aux questions courantes :

Remarque

Certains de ces exemples joignent la table de clusters à la table system.billing.usage. Comme les enregistrements de facturation sont interrégionaux et que les enregistrements de cluster sont propres à la région, les enregistrements de facturation correspondent uniquement aux enregistrements de cluster de la région que vous interrogez. Pour voir les enregistrements d’une autre région, exécutez la requête dans cette région.

Joindre les enregistrements de cluster aux enregistrements de facturation les plus récents

Cette requête peut vous aider à comprendre les dépenses au fil du temps. Dès que vous mettez à jour usage_start_time sur la période de facturation la plus récente, il récupère les mises à jour les plus récentes des enregistrements de facturation à joindre aux données de clusters.

Chaque enregistrement est associé au propriétaire du cluster pendant cette exécution particulière. Par conséquent, si le propriétaire du cluster change, les coûts sont regroupés pour le propriétaire approprié en fonction de l’utilisation du cluster.

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;

Attribuer les coûts au propriétaire du cluster

Si vous voulez réduire les coûts de calcul, vous pouvez utiliser cette requête pour déterminer les propriétaires de cluster dans votre compte qui utilisent les plus de 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;

Identifier les ressources de calcul avec l’utilisation moyenne la plus élevée et l’utilisation maximale

Identifiez le calcul à usage universel et de travaux qui ont la plus forte utilisation moyenne du processeur et l’utilisation maximale du processeur.

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;