Référence des tables système compute
Cet article vous fournit un guide de référence pour les tables système de compute. Vous pouvez utiliser ces tables pour surveiller l'activité et les métriques du compute polyvalent classique, du compute de Jobs, et du compute de Lakeflow Pipelines dans votre compte. Ces tables de compute classiques incluent :
clusters: Enregistre les configurations compute 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 métriques d'utilisation de votre compute.instance_events: Capture les transitions d'état des instances de compute classiques.instance_pools: enregistre les configurations de pool d'instances dans votre compte.
Schéma de table de cluster
La table de cluster est une table de dimension à évolution lente qui contient l'historique complet des configurations de compute au fil du temps pour le compute à usage général, le compute de Jobs, le compute de LakeFlow Pipelines et le compute de maintenance de pipelines.
Chemin de la table : Cette table système se trouve à l'adresse suivante : system.compute.clusters
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| chaîne | ID du compte où ce cluster a été créé. |
|
| chaîne | ID du workspace où ce cluster a été créé. |
|
| chaîne | ID du cluster auquel cet enregistrement est associé. |
|
| chaîne | Nom défini par l'utilisateur pour le cluster. |
|
| chaîne | Nom d'utilisateur du propriétaire du cluster. Par default, il s'agit du créateur du cluster, mais cela peut être modifié via l'API Clusters. |
|
| Horodatage | Timestamp de la modification apportée à cette définition de compute. |
|
| Horodatage | Timestamp de la suppression du cluster. La valeur est |
|
| chaîne | Nom du type de nœud Driver. Cela correspond au nom du type d'instance du fournisseur cloud. Pour le compute qui utilise des types d'instances AWS Fleet, il s'agit du nom du type d'instance Fleet (par exemple, |
|
| chaîne | Nom du type de nœud Worker. Cela correspond au nom du type d'instance du fournisseur cloud. Pour le compute qui utilise des types d'instances AWS Fleet, il s'agit du nom du type d'instance Fleet (par exemple, |
|
| bigint | Nombre de workers. Défini uniquement pour les clusters à taille fixe. |
|
| bigint | Le nombre minimum de Worker défini. Ce champ n'est valide que pour les clusters à dimensionnement automatique. |
|
| bigint | Le nombre maximum défini de Workers. Ce champ n'est valide que pour les clusters à dimensionnement automatique. |
|
| bigint | La durée d'arrêt automatique configurée. |
|
| booléen | Statut d'activation du disque à mise à l'échelle automatique. |
|
| Carte | Tags définis par l'utilisateur pour le cluster (n'inclut pas les tags default). |
|
| chaîne | Source du cluster. Les valeurs |
|
| tableau | Ensemble de chemins d'accès pour les scripts d'initialisation. |
|
| structure | Paramètres spécifiques à AWS. |
|
| structure | Paramètres spécifiques à Azure. |
|
| structure | Paramètres spécifiques à GCP. Ce champ sera vide. |
|
| chaîne | ID du Pool d'instances si le Driver est configuré au-dessus d'un Pool d'instances. |
|
| chaîne | ID du Pool d'Instances si le Worker est configuré sur un pool d'instances. |
|
| chaîne | Le Databricks Runtime du cluster. |
|
| Horodatage | Timestamp de la modification de la définition du compute. |
|
| Date | Modifier la date. Utilisé pour la rétention. |
|
| chaîne | Le mode d’accès de la ressource compute. Voir la référence du mode d'accès. |
|
| chaîne | ID de la politique de compute du cluster, le cas échéant. |
|
Référence du mode d'accès
Le tableau suivant traduit les valeurs possibles contenues dans la colonne data_security_mode. La colonne peut également être null pour certains pipelines et clusters créés par le système.
Valeur | Mode d’accès |
|---|---|
| Standard |
| Dédié |
Les modes d'accès hérités sont enregistrés avec les valeurs suivantes :
Valeur | Mode d’accès |
|---|---|
| Transmission des identifiants (partagés) |
| Transmission des identifiants (utilisateur unique) |
| Personnalisé |
| Pas d'isolation partagée |
Schéma de table des types de nœuds
La table des types de nœuds recense les types de nœuds actuellement disponibles avec leurs informations matérielles de base.
**Chemin de la table** : Cette table système est située system.compute.node_types à.
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| chaîne | ID du compte où ce cluster a été créé. |
|
| chaîne | Identifiant unique pour le type de nœud. |
|
| double | Nombre de vCPU pour l'instance. |
|
| long | Mémoire totale pour l'instance. |
|
| long | Nombre de GPU pour l’instance. |
|
Schéma de la table de chronologie des nœuds
Le tableau chronologique des nœuds capture les données d'utilisation des Ressources au niveau des nœuds à la granularité de la minute. Chaque enregistrement contient des données pour une minute donnée par instance. Ce tableau capture les chronologies des nœuds pour le compute à usage général, le compute de Job, le compute des LakeFlow Pipelines et les Ressources de compute de maintenance des pipelines de votre compte.
**Chemin de la table** : Cette table système est située system.compute.node_timeline à.
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| chaîne | ID du compte où cette ressource de compute est en cours d'exécution. |
|
| chaîne | ID du Workspace où cette ressource de compute est exécutée. |
|
| chaîne | ID de la ressource de compute. |
|
| chaîne | ID de l'instance spécifique. |
|
| Horodatage | Heure de start de l'enregistrement en UTC. |
|
| Horodatage | Heure de fin de l'enregistrement en UTC. |
|
| booléen | Si l'instance est un nœud driver ou worker. |
|
| double | Pourcentage de temps que le processeur a passé en mode utilisateur. |
|
| double | Pourcentage du temps passé par le CPU dans le noyau. |
|
| double | Pourcentage de temps que le CPU a passé à attendre les E/S. |
|
| double | Pourcentage de la mémoire du compute qui a été utilisé pendant la période (y compris la mémoire utilisée par les processus d'arrière-plan s'exécutant sur le compute). |
|
| double | Pourcentage d'utilisation de la mémoire attribué à la mémoire swap. |
|
| bigint | Le nombre d'octets envoyés dans le trafic réseau. |
|
| bigint | Le nombre d'octets reçus du trafic réseau. |
|
| Carte | L'utilisation du disque regroupée par point de montage. Il s'agit d'un stockage éphémère provisionné uniquement pendant l'exécution du compute. |
|
| chaîne | Le nom du type de nœud. Cela correspond au nom du type d'instance du fournisseur cloud. |
|
| chaîne | L'adresse IP privée attribuée au nœud. |
|
Pour le compute qui utilise les types d'instances de flotte AWS, la valeur node_type est le nom du type d'instance de flotte (par exemple, rd-fleet.4xlarge), qui ne correspond pas à un seul type d'instance de fournisseur de cloud.
Schéma de la table d'événements d'instance
Aperçu
Cette table système est en aperçu public.
La table d'événements d'instance capture les transitions d'état des instances de compute classiques. Chaque ligne représente un changement d'état pour une seule instance. Ce tableau inclut les enregistrements pour le compute universel, le compute de Job et le compute de LakeFlow Pipelines de tous les Workspaces de votre compte déployés dans la même région de cloud.
**Chemin de la table** : Cette table système est située system.compute.instance_events à.
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| chaîne | ID du compte où cette instance est lancée. |
|
| chaîne | ID du Workspace où cette instance est lancée. |
|
| chaîne | ID de l'instance. |
|
| Horodatage | Timestamp de l'événement. |
|
| chaîne | Type d'événement. Les valeurs possibles sont |
|
| chaîne | ID de pool d'instances si l'instance appartient à un pool. |
|
| chaîne | ID du cluster sur lequel cette instance est placée. Renseigné uniquement lorsque |
|
| chaîne | Le nom du type de nœud. Cela correspond au nom du type d'instance du fournisseur cloud. |
|
| chaîne | État d'instance. Consultez les états d'instance. |
|
| chaîne | Type de disponibilité de l'instance. Les valeurs possibles sont |
|
Pour le compute qui utilise les types d'instances de flotte AWS, la valeur node_type est le nom du type d'instance de flotte (par exemple, rd-fleet.4xlarge), qui ne correspond pas à un seul type d'instance de fournisseur de cloud.
États des instances
INSTANCE_LAUNCHING: L'instance est en cours d'initialisation.INSTANCE_READY: L'instance est entièrement initialisée et prête à être utilisée, mais pas actuellement en cours d'utilisation.INSTANCE_PLACED: L'instance est actuellement utilisée (connectée à un cluster).INSTANCE_TERMINATED: L'instance est arrêtée.
Quand cluster_id est-il rempli ?
Le champ cluster_id est renseigné uniquement lorsque l'instance est à l'état INSTANCE_PLACED. Pour tous les autres états (INSTANCE_LAUNCHING, INSTANCE_READY, INSTANCE_TERMINATED), cluster_id est null. Ce comportement est cohérent pour les instances avec pool et sans pool.
La table instance_events inclut uniquement les événements de placement pour le compute polyvalent, les Job et le compute des LakeFlow Pipelines. Les événements de placement pour d’autres charges de travail, telles que les SQL Warehouse, ne sont pas inclus dans ce tableau.
Schéma de la table des pools d'instances
Aperçu
Cette table système est en aperçu public.
La table des pools d'instances est une table de dimensions à évolution lente qui contient l'historique complet des configurations de pool d'instances au fil du temps. Lorsqu'une configuration change, une nouvelle ligne est émise, remplaçant logiquement la précédente.
**Chemin de la table** : Cette table système est située system.compute.instance_pools à.
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| chaîne | ID du compte où ce pool d'instances a été créé. |
|
| chaîne | ID du workspace où ce Pool d'instances a été créé. |
|
| chaîne | ID du pool d'instances. |
|
| Horodatage | Timestamp de la modification de la configuration du pool d'instances. |
|
| Horodatage | Timestamp de la création du Pool d'instances. |
|
| Horodatage | Timestamp de suppression du pool d'instances. La valeur est |
|
| chaîne | Nom défini par l'utilisateur du Pool d'instances. |
|
| Carte | Tags définis par l’utilisateur pour le Pool d’instances (n’inclut pas les tags par default). |
|
| chaîne | Type de nœud utilisé pour les instances dans le Pool. Cela correspond au nom du type d'instance du fournisseur cloud. Pour le compute qui utilise des types d'instances AWS Fleet, il s'agit du nom du type d'instance Fleet (par exemple, |
|
| bigint | Le nombre de minutes après lesquelles les instances inactives du cache du pool sont arrêtées automatiquement après être restées inactives. |
|
| bigint | Nombre minimal d'instances inactives à conserver dans le Pool d'instances. |
|
| bigint | Nombre maximal d'instances en attente à conserver dans le pool, y compris les instances utilisées par les clusters et les instances inactives. |
|
| booléen | Mise à l'échelle automatique du stockage local : lorsque activées, les instances de ce Pool acquièrent dynamiquement de l'espace disque supplémentaire lorsque les Worker Spark manquent d'espace disque. |
|
| structure | La spécification des disques qui sont attachés à tous les conteneurs Spark. |
|
| tableau | Images Docker personnalisées préchargées sur le Pool. |
|
| chaîne | Version d'image Spark préchargée pour le Pool, si défini. |
|
| structure | Attributs liés aux pools d'instances s'exécutant sur AWS. |
|
| structure | Attributs liés aux Pools d'instances exécutés sur Azure. |
|
| structure | Attributs liés aux pools d'instances s'exécutant sur GCP. |
|
Limitations connues
- Les ressources compute qui ont été marquées comme supprimées avant le 23.10.2023 n'apparaissent pas dans le tableau des clusters. Cela pourrait entraîner des jointures de la table
system.billing.usagene correspondant pas aux enregistrements dans la table des clusters. Toutes les ressources compute actives ont été rattrapées. - Ces tables incluent uniquement les enregistrements pour le compute polyvalent et les jobs. Elles ne contiennent pas d'enregistrements pour le compute Serverless ou les SQL Warehouse.
- Les nœuds qui ont fonctionné pendant moins de 10 minutes pourraient ne pas apparaître dans le tableau
node_timeline.
Exemples de query
Vous pouvez utiliser les requêtes d’échantillon suivantes pour répondre aux questions courantes :
- Associer les enregistrements de clusters aux enregistrements de facturation les plus récents
- Identifiez les ressources de compute avec l'utilisation moyenne la plus élevée et l'utilisation de pointe.
- Obtenir la version la plus récente de chaque pool d'instances.
- Calculer le temps d'inactivité et d'activité de l'instance
Certains de ces exemples joignent la table des clusters à la table system.billing.usage. Étant donné que les enregistrements de facturation sont interrégionaux et que les enregistrements de clusters sont spécifiques à la région, les enregistrements de facturation ne correspondent aux enregistrements de clusters que pour la région dans laquelle vous effectuez la query. Pour afficher les enregistrements d'une autre région, veuillez exécuter la query dans cette région.
Associez les enregistrements de clusters aux enregistrements de facturation les plus récents.
Cette query peut vous aider à comprendre les dépenses au fil du temps. Une fois que vous mettez à jour le usage_start_time à la période de facturation la plus actuelle, il récupère les mises à jour les plus récentes des enregistrements de facturation pour les joindre aux données des clusters.
Chaque enregistrement est associé au propriétaire du cluster pendant cette exécution particulière. Ainsi, si le propriétaire du cluster change, les coûts seront attribués au propriétaire correct en fonction du moment où le cluster a été utilisé.
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;
Identifiez les ressources compute avec l'utilisation moyenne la plus élevée et l'utilisation maximale.
Identifiez le compute polyvalent et les jobs de compute qui ont l'utilisation moyenne du CPU la plus élevée et l'utilisation maximale du CPU la plus élevée.
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;
Obtenir la version la plus récente de chaque pool d'instances
La table instance_pools est de type SCD2, où au lieu de mettre à jour les enregistrements existants, un nouvel enregistrement est créé chaque fois qu'une modification est apportée. Pour obtenir la version la plus récente, prenez l'entrée avec la plus grande 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;
Calculer le temps d'inactivité et d'activité des instances
Cette query calcule le temps d'inactivité total et le temps actif pour chaque instance en utilisant les transitions d'état de la table 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;