Contextes d’exécution de notebook Databricks

Lorsque vous attachez un notebook à un cluster, Azure Databricks crée un contexte d’exécution. Un contexte d’exécution contient l’état d’un environnement REPL pour chaque langage de programmation pris en charge : Python, R, Scala et SQL. Lorsque vous exécutez une cellule dans un notebook, la commande est distribuée à l’environnement de REPL de langage approprié et exécutée.

Vous pouvez également utiliser l’API d’exécution de commande pour créer un contexte d’exécution et envoyer une commande à exécuter dans le contexte d’exécution. De même, la commande est distribuée à l’environnement REPL de langage et exécutée.

Un cluster a un nombre maximal de contextes d’exécution (145). Une fois que le nombre de contextes d’exécution a atteint ce seuil, vous ne pouvez pas attacher un notebook au cluster ou créer un nouveau contexte d’exécution.

Contextes d’exécution inactifs

Un contexte d’exécution est considéré comme inactif lorsque la dernière exécution s’est terminée après un seuil d’inactivité défini. La dernière exécution terminée est la dernière fois que le notebook a terminé l’exécution des commandes. Le seuil d’inactivité correspond à la durée qui doit s’écouler entre la dernière exécution terminée et toute tentative de détachement automatique du notebook.

Lorsqu’un cluster a atteint la limite de contexte maximale, Azure Databricks supprime (expulse) les contextes d’exécution inactifs (en commençant par le plus anciennement utilisé) en fonction des besoins. Même en cas de suppression d’un contexte, le notebook utilisant le contexte est toujours attaché au cluster et s’affiche dans la liste des notebooks du cluster. Les notebooks de streaming sont considérés comme s’exécutant activement et leur contexte n’est jamais expulsé tant que leur exécution n’a pas été arrêtée. Si un contexte inactif est supprimé, l’interface utilisateur affiche un message indiquant que le notebook utilisant le contexte a été détaché en raison d’une inactivité.

Notebook context evicted

Si vous tentez d’attacher un notebook à un cluster qui a le nombre maximal de contextes d’exécution et qu’il n’y a pas de contextes inactifs (ou si la suppression automatique est désactivée), l’interface utilisateur affiche un message indiquant que le seuil de contextes d’exécution maximal actuel a été atteint et que notebook reste à l’état détaché.

Notebook detached

Si vous dupliquez un processus, un contexte d’exécution inactif est toujours considéré comme inactif une fois que l’exécution de la requête qui a dupliqué le processus a été retournée. La duplication de processus distincts n’est pas recommandée avec Spark.

Configurer l’éviction automatique du contexte

L’éviction automatique est activée par défaut. Pour désactiver l’éviction automatique pour un cluster, définissez la propriété Sparkspark.databricks.chauffeur.enableIdleContextTracking false.

Déterminer la version Spark et Databricks Runtime

Pour déterminer la version Spark du cluster auquel votre notebook est attaché, exécutez :

spark.version

Pour déterminer la version Databricks Runtime du cluster auquel votre notebook est attaché, exécutez :

spark.conf.get("spark.databricks.clusterUsageTags.sparkVersion")

Notes

La balise sparkVersion et la propriété spark_version requises par les points de terminaison dans les API Clusters et API Travaux se réfèrent à la version Databricks Runtime, et non à la version Spark.