Exécuter et planifier des notebooks dans Workspaces

Planification des notebooks dans Workspaces

Vous pouvez automatiser vos workflows de science des données et ML en programmant des notebooks dans Workspaces pour qu’ils s’exécutent à intervalles récurrents. Les exécutions planifiées utilisent des tâches Snowflake et exécutent des Notebooks avec toutes les dépendances dans une séquence cohérente, de haut en bas.

Note

La planification n’est actuellement pas prise en charge pour les notebooks dans les espaces de travail partagés.

Autorisations requises

Pour planifier un notebook, le rôle utilisé pour créer la planification doit disposer des autorisations et des droits suivants :

Niveau du compte

  • EXECUTE TASK sur le ACCOUNT Permet au rôle d’exécuter des tâches associées aux notebooks planifiés.

Niveau de schéma

  • CREATE TASK : Requis pour créer la tâche Snowflake sous-jacente.

  • USAGE sur le schéma cible : Pour stocker les métadonnées des tâches et les objets des projets du notebook.

Autorisations de calcul et d’entrepôt

  • USAGE sur le pool de calcul utilisé pour l’exécution du notebook.

  • USAGE et MONITOR sur l’entrepôt de requêtes utilisé pour les cellules SQL à l’intérieur du notebook.

USAGE sur les intégrations d’accès externes (EAIs) pour les notebooks

  • USAGE sur n’importe quel EAI utilisée par le notebook.

Planifier une exécution de notebook

Pour planifier un notebook dans Snowsight,procédez comme suit :

  1. Dans le menu de navigation, sélectionnez Projects » Notebooks.

  2. Créez un nouveau notebook ou ouvrez un notebook existant pour le planifier.

  3. Sélectionner Schedule en haut à droite de l’éditeur de notebooks.

    • S’il s’agit de la première tâche du notebook, le bouton Planifier est une icône de calendrier.

    • Si une planification existe déjà, l’icône est un calendrier avec une horloge.

  4. Sélectionnez Create Schedule.

  5. Dans la boîte de dialogue Schedule a Notebook Task, fournissez les informations suivantes.

    Paramètres de base

    • Nom de la tâche : nom unique de la tâche planifiée. Le nom par défaut est {notebook-name}_task_# mais il peut être modifié si nécessaire.

    • Rôle de propriétaire : rôle Snowflake sous lequel la tâche est exécutée. Sélectionnez un rôle doté des autorisations nécessaires pour exécuter toutes les opérations effectuées par le notebook planifié. Ce rôle doit avoir des autorisations pour :

      • Lisez/écrivez les objets de base de données que le notebook utilise.

      • Accédez aux entrepôts, aux pools de calcul et aux intégrations.

      • Créez/mettez à jour les objets de tâche et de projet.

    • Emplacement : la base de données et le schéma dans lesquels l’objet de tâche et l’objet de projet de notebook associé seront créés. Choisissez un schéma où votre rôle dispose des privilèges CREATE TASK, USAGE et de privilèges pertinents.

    • Fréquence : la fréquence à laquelle le notebook doit s’exécuter. Choisissez parmi : Toutes les heures, tous les jours, toutes les semaines, tous les mois mensuel ou personnalisé (planification Cron). Toutes les heures d’exécution utilisent votre fuseau horaire local.

    Paramètres avancés

    • Nom du projet : nom unique pour le conteneur de projet du notebook que Snowflake crée pour l’exécution des tâches. S’il n’est pas modifié, Snowflake fournit un nom par défaut.

    • Paramètre (facultatif) : paramètres de valeurs clés transmis au notebook lors de l’exécution et qui apparaissent sous forme d’arguments de ligne de commande (dans sys.argv). Les paramètres sont utiles pour transmettre des dates, des indicateurs d’environnement, des seuils ou des versions de modèles.

    Variante d’exécution

    • CPU : utilise un environnement d’exécution de conteneur CPU et fonctionne sur un pool de calcul CPU (par exemple, le SYSTEM_COMPUTE_POOL_CPU provisionné automatiquement).

    • GPU : utilise un environnement d’exécution de conteneur GPU qui comprend des bibliothèques accélérées par GPU et qui fonctionne sur un pool de calcul GPU (par exemple SYSTEM_COMPUTE_POOL_GPU).

    • Version Python : la version de Python utilisée lors de l’exécution de la tâche.

    • Version de l’environnement d’exécution : l’image de base de l’environnement d’exécution de conteneur. En choisissant la version d’exécution correcte, votre notebook fonctionne de manière cohérente entre le développement et l’exécution planifiée.

    • Pool de calcul : le pool de calcul qui exécutera la tâche du notebook. Assurez-vous que le pool de calcul a de la capacité (nœuds libres) au moment de l’exécution planifiée. Pour éviter l’échec des exécutions planifiées, nous vous recommandons d’utiliser un pool de calcul dédié afin de vous assurer qu’aucun autre service SPCS prend toute la capacité.

    • Entrepôt de requêtes : l’entrepôt Snowflake utilisé pour toutes les requêtes SQL à l’intérieur du notebook.

    • Intégrations d’accès externes (en option) : définit les intégrations d’accès externe de Snowflake (EAIs) que le notebook peut utiliser. Les EAIs sont nécessaires si votre notebook nécessite des APIs externes, des services tiers ou un stockage Cloud en dehors des zones de préparation internes de Snowflake. Si aucune EAIs n’est listée, votre rôle sélectionné ne possède ou n’a aucun privilège sur une intégration.

  6. Examinez l’aperçu de la planification et sélectionnez Create.

Si une tâche échoue parce que l’utilisateur ne dispose pas des autorisations nécessaires, la boîte de dialogue reste ouverte et affiche les messages d’erreur correspondants.

Voir les exécutions de notebook planifiées

Vous pouvez voir les tâches planifiées à deux endroits :

Depuis le notebook

  1. Dans le menu de navigation, sélectionnez Projects » Notebooks.

  2. Ouvrez un notebook planifié.

  3. Sélectionner Schedule en haut à droite de l’éditeur de notebooks. Une fenêtre affiche les informations suivantes :

  • Toutes les exécutions planifiées pour ce notebook. Pour voir les exécutions planifiées ou interagir avec elles, vous devez utiliser un rôle ayant accès à la base de données et au schéma dans lesquels la planification et les objets de projet ont été créés.

  • La prochaine heure d’exécution planifiée.

  • Le statut des exécutions précédentes. Survolez un indicateur de statut pour voir des détails tels que l’ID de la requête, dernière heure d’exécution, la durée et le statut.

Depuis le menu Actions

  • Ouvrir l’historique d’exécution : Ouvre l’objet de projet du notebook affichant toutes les exécutions précédentes, y compris le statut, la durée et les résultats. La sélection du résultat d’une exécution ouvre le notebook exécuté avec sa sortie.

Note

Pour voir l’historique des exécutions de notebooks déclenchées par Airflow, connectez-vous à Snowsight en utilisant le même utilisateur que celui qui exécute Airflow.

Déployer des mises à jour des tâches de notebook planifiées

Après avoir modifié un notebook, vous devez déployer vos modifications avant que les exécutions planifiées n’utilisent la version mise à jour. Le déploiement garantit la reproductibilité et empêche les tâches planifiées d’exécuter du code différent de ce qui a été déployé en dernier lieu. Lorsqu’un notebook présente des modifications nécessitant un déploiement, l’icône de planification (calendaire) affiche un indicateur sous forme d’horloge.

Après avoir modifié le code ou les cellules, l’icône indique qu’il y a des changements non déployés.

  • Sélectionnez Deployed Changes.

    Snowflake met ensuite à jour l’objet de projet de notebook associé, et toutes les tâches planifiées pour ce notebook utiliseront la version nouvellement déployée pour la prochaine exécution.

Trouver un objet de projet de notebook dans l’explorateur d’objets

Chaque notebook planifié crée automatiquement un objet de projet de notebook qui stocke son code déployé, son historique d’exécution et ses artefacts.

Pour localiser un objet de projet de notebook dans Snowsight, suivez les étapes suivantes :

  1. Dans le menu de navigation, sélectionnez Catalog » Database Explorer.

  2. Navigate to Database » Schema » Notebook Project Objects to view all project objects in that schema.

Sinon, vous pouvez :

  1. Ouvrez le notebook concerné.

  2. Sélectionnez Schedule dans le coin supérieur droit.

  3. Dans le menu déroulant, sélectionnez. Run history pour ouvrir l’objet de projet de notebook associé.

Voir l’historique d’exécution du notebook

Si une étape échoue pendant l’exécution, Notebooks arrête l’exécution pour éviter des résultats en aval partiels ou incohérents.

Pour voir l’historique de l’exécution, procédez comme suit :

  1. Dans le menu de navigation, sélectionnez Projects » Notebooks.

  2. Ouvrez le notebook dont vous souhaitez consulter l’historique d’exécution.

  3. Dans le coin supérieur droit de l’éditeur de notebooks, sélectionnez l’icône de planification (calendrier).

  4. Sélectionnez View run history dans le menu déroulant.

Run History indique les heures de début et de fin, le statut d’exécution et les détails des erreurs tels que les journaux et les métriques de l’objet de projet du notebook.

Planifier un notebook à l’aide des tâches

  1. Dans le menu de navigation, sélectionnez Projects » Workspaces.

  2. Exécutez la commande suivante dans un fichier/une feuille de calcul SQL :

CREATE OR REPLACE TASK <database_name>.<schema_name>.<task_name>
    WAREHOUSE = <warehouse_name>
    SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles'
    -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone>
AS
    -- Execute a notebook stored within a Snowflake project.
    EXECUTE NOTEBOOK
        PROJECT = '<database_name>.<schema_name>.<project_name>'
        -- Notebook file to run
        MAIN_FILE = '<notebook_file_name>.ipynb'
        -- Compute pool used to run the notebook
        COMPUTE_POOL = '<compute_pool_name>'
        -- Runtime environment (Python version, CPU/GPU, etc.)
        RUNTIME = '<runtime_version>'
        -- Warehouse used for SQL statements inside the notebook
        QUERY_WAREHOUSE = <query_warehouse_name>;
Copy

Après avoir créé cette tâche, exécutez la commande suivante pour activer la planification :

ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;
Copy

Note

Pour en savoir plus sur l’utilisation du crédit, le comportement en matière de délai d’expiration et la gestion des services de notebook, voir Configuration du calcul et Délai d’attente.