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 :
- Joindre les enregistrements de cluster aux enregistrements de facturation les plus récents
- Attribuer les coûts au propriétaire du cluster
- Identifier les ressources de calcul avec l’utilisation moyenne la plus élevée et l’utilisation maximale
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;