Planen von Workflows nach Szenario¶
Unter diesem Thema finden Sie detaillierte Workflows für die Planung von Notebooks in zwei typischen Szenarios:
Szenario A: Entwicklung in einem privaten Arbeitsbereich – Planen von Notebooks direkt über Snowsight
Szenario B: Produktion (CI/CD) – Bereitstellen von Notebooks aus einem Git-Repository mit CI/CD-Pipelines
Bemerkung
Die Zeitplanung von Notebooks wird derzeit nicht in freigegebenen Arbeitsbereichen unterstützt.
Szenario A: Entwicklung in einem privaten Arbeitsbereich¶
Wählen Sie im Navigationsmenü die Option Projects » Workspaces aus.
Wählen Sie + Add new » Notebook aus, um ein neues Notebook zu erstellen, oder öffnen Sie ein vorhandenes Notebook, um es zu planen.
Bemerkung
Stellen Sie sicher, dass Sie den Ausführungskontext (Datenbank und Schema) in dem Notebook angegeben haben, für das Sie planen. Weitere Informationen dazu finden Sie unter Ausführungskontext festlegen.
Wählen Sie Create Schedule aus.
Geben Sie im Dialogfeld Schedule a Notebook Task die folgenden Informationen an:
Grundeinstellungen
Aufgabenname: Der eindeutige Name für die geplante Aufgabe. Der Standardname ist
{notebook-name}_task_#, kann aber bei Bedarf aktualisiert werden.Eigentümerrolle: Die Snowflake-Rolle, unter der die Aufgabe ausgeführt wird. Wählen Sie eine Rolle mit den erforderlichen Berechtigungen aus, um alle Vorgänge auszuführen, die vom geplanten Notebook durchgeführt werden. Diese Rolle muss über folgende Berechtigungen verfügen:
Lesen aus der/Schreiben in die vom Notebook verwendeten Datenbankobjekte
Zugreifen auf Warehouses, Computepools und Integrationen
Aufgaben- und Projektobjekte erstellen/aktualisieren
Speicherort: Die Datenbank und das Schema, in denen das Aufgabenobjekt und das zugehörige Notebook-Projektobjekt erstellt werden. Wählen Sie ein Schema aus, in dem Ihre Rolle CREATE TASK- und USAGE-Berechtigungen hat. Wenn Ihre Rolle nur USAGE-Berechtigungen für das Schema hat, stellen Sie sicher, dass sie auch über die CREATE NOTEBOOK PROJECT-Berechtigung verfügt.
Frequenz: Wie oft das Notebook ausgeführt werden soll. Wählen Sie aus: „Hourly“, „Daily“, „Weekly“, „Monthly“ oder „Custom“ (Cron-Zeitplanung). Alle Ausführungszeiten sind in Ihrer lokalen Zeitzone angegeben.
Erweiterte Einstellungen (alle Felder sind erforderlich, sofern nicht anders angegeben)
Name des Notebook-Projekts: Ein eindeutiger Name für den Projektcontainer des Notebooks, den Snowflake für die Ausführung der Aufgabe erstellt. Wenn der Name nicht bearbeitet wird, stellt Snowflake einen Standardnamen bereit.
Parameter (optional): Schlüsselwertparameter werden zur Laufzeit an das Notebook übergeben und erscheinen als Befehlszeilenargumente (in
sys.argv). Parameter sind nützlich, um Datumsangaben, Umgebungsflags, Schwellenwerte oder Modellversionen zu übergeben. Parameter können in Snowsight als durch Leerzeichen getrennte Werte oder im Befehl EXECUTE NOTEBOOK PROJECT alsARGUMENTS = 'env prod'übergeben werden. Weitere Informationen dazu finden Sie unter Ausführen von Notebooks mit Parametern.Laufzeitvariante: Die Laufzeitumgebung, die für die Ausführung des Notebooks verwendet wird. Wählen Sie aus:
CPU: Verwendet eine CPU-Container-Laufzeitumgebung und wird auf einem CPU-Computepool ausgeführt (z. B. der automatisch bereitgestellte
SYSTEM_COMPUTE_POOL_CPU).GPU: Verwendet eine GPU-Container-Laufzeitumgebung, die GPU-beschleunigte Bibliotheken enthält, und wird auf einem GPU-Computepool ausgeführt (z. B.
SYSTEM_COMPUTE_POOL_GPU).Python-Version: Die Python-Version, die während der Ausführung der Aufgabe verwendet wird.
Laufzeitversion: Das Basis-Container-Laufzeit-Image. Die Wahl der richtigen Laufzeitversion stellt sicher, dass Ihr Notebook zwischen der Entwicklung und der geplanten Ausführung konsistent ausgeführt wird.
Computepool: Der Computepool, der die Notebook-Aufgabe ausführt. Stellen Sie sicher, dass der Computepool zum Zeitpunkt der geplanten Ausführung über Kapazitäten (freie Knoten) verfügt. Um zu verhindern, dass geplante Ausführungen fehlschlagen, empfehlen wir Ihnen, einen dedizierten Computepool zu verwenden, um sicherzustellen, dass keine weiteren SPCS-Services vorhanden sind, die die volle Kapazität belegen.
Warehouse-Abfrage: Das Snowflake-Warehouse, das für alle SQL-Abfragen innerhalb des Notebooks verwendet wird.
Integrationen für den externen Zugriff (optional): Definiert, welche Integrationen für den externen Zugriff (EAIs) das Notebook verwenden darf. EAIs sind erforderlich, wenn Ihr Notebook externe APIs, Drittanbieterservices oder Cloudspeicher außerhalb der internen Stagingbereiche von Snowflake benötigt. Wenn keine EAIs aufgeführt sind, besitzt Ihre ausgewählte Rolle keine Integrationen oder keine Berechtigungen.
Anforderungsdatei (optional): Installieren Sie Python-Abhängigkeiten vorab für wiederholbare Ausführungen unter Verwendung des
REQUIREMENTS_FILE-Parameters. Weitere Informationen dazu finden Sie unter Verwalten von Paketen und Laufzeitumgebung.
Überprüfen Sie die Vorschau des Zeitplans, und wählen Sie dann Create aus.
Szenario B: Produktion (CI/CD)¶
Für Produktionsumgebungen empfehlen wir die Verwaltung des Notebook-Codes in einem Git-basierten Arbeitsbereich (Details dazu finden Sie unter Integrieren von Arbeitsbereichen in ein Git-Repository) oder die lokale Entwicklung in Ihrer bevorzugten IDE. Sie können eine CI/CD-Pipeline (z. B. GitHub-Aktionen) verwenden, um Dateien in einem internen oder temporären Stagingbereich von Snowflake bereitzustellen.
Eine praktische Anleitung für dieses Muster finden Sie im Quickstart `Erste Schritte mit Data Engineering mithilfe von Snowflake Notebooks<https://www.snowflake.com/en/developers/guides/data-engineering-with-notebooks/>`_ und dem zugehörigen`Code-Repository <https://github.com/Snowflake-Labs/sfguide-data-engineering-with-notebooks>`_ für GitHub.
Sobald sich die Dateien im Stagingbereich befinden, können Sie Folgendes tun:
Ein Notebook-Projektobjekt (NPO) erstellen, das von diesem Stagingbereich stammt.
Das NPO mithilfe einer Snowflake-Aufgabe zur automatisierten Ausführung planen.
Stagingbereich erstellen
Verwenden Sie CREATE STAGE, um einen internen oder temporären Stagingbereich zu erstellen:
-- Ensure the landing zone exists CREATE STAGE IF NOT EXISTS <database_name>.<schema_name>.<stage_name>;
Notebook-Dateien im internen oder temporären Stagingbereich laden/bereitstellen
Ihre CI/CD-Pipeline sollte die
.ipynb-Datei(en) in einen Snowflake-Stagingbereich hochladen. Verwenden Sie den Befehl PUT, um sicherzustellen, dass die Notebook-Dateien in einen Stagingbereich geladen werden, der vom Notebook-Projekt gelesen werden kann.PUT file://<absolute_path_to_file>/ @<database_name>.<schema_name>.<stage_name> AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
Beispiel:
PUT file://notebooks/ml_model/train.ipynb @<database_name>.<schema_name>.<stage_name> AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
Notebook-Projektobjekt (NPO) erstellen oder aktualisieren
Erstellen (oder aktualisieren) Sie das NPO, um auf den internen oder temporären Stagingbereich zu verweisen, der Ihre bereitgestellten Notebook-Dateien enthält:
CREATE NOTEBOOK PROJECT IF NOT EXISTS <database_name>.<schema_name>.<project_name> FROM '@<database_name>.<schema_name>.<stage_name>';
Notebook-Projektdetails ändern
Bei nachfolgenden Codeänderungen führt Ihre Pipeline einen ALTER-Befehl aus. Dadurch wird das Projekt auf die neueste Version des Codes aktualisiert, ohne dass das Objekt gelöscht und neu erstellt werden muss:
-- Update the project with the latest code from the stage ALTER NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name> ADD VERSION FROM '@<database_name>.<schema_name>.<stage_name>';
Notebook-Projekt ausführen (mit einer Aufgabe orchestrieren)
Erstellen Sie eine Aufgabe, um das NPO zu planen und auszuführen. Verwenden Sie eine Snowflake-Aufgabe, um den Zeitplan und die Ausführungsparameter für das NPO zu definieren.
Bemerkung
Stellen Sie sicher, dass Sie den Ausführungskontext Ihres Notebooks angeben (verwenden Sie die Datenbank und das Schema des Notebooks, das Sie planen möchten). Weitere Informationen dazu finden Sie unter Ausführungskontext festlegen.
-- Create or replace the task to orchestrate the notebook CREATE OR REPLACE TASK <database_name>.<schema_name>.<task_name> WAREHOUSE = '<warehouse_name>' SCHEDULE = 'USING CRON 0 9 * * * America/Los_Angeles' AS EXECUTE NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name> MAIN_FILE = 'snow://workspace/<workspace_hash>/path/to/notebook.ipynb' COMPUTE_POOL = 'SYSTEM_COMPUTE_POOL_CPU' RUNTIME = 'V2.2-CPU-PY3.12' QUERY_WAREHOUSE = '<warehouse_name>' ARGUMENTS = '<db_name> <schema_name> <warehouse_name>';
Informationen zur Übergabe von Parametern an geplante Notebooks finden Sie unter Ausführen von Notebooks mit Parametern.
Ausführung oder Ausführungsverlauf Ihres Notebooks anzeigen
Nachdem die Aufgabe ausgeführt wurde, können Sie ihren Erfolg oder Misserfolg in Snowsight überwachen, um sicherzustellen, dass die CI/CD-Bereitstellung wie erwartet ausgeführt wird. Ausführliche Anweisungen zum Anzeigen des Ausführungsverlaufs finden Sie unter Geplante Notebook-Ausführungen anzeigen.
Snowsight unterstützt die nicht interaktive (headless) Ausführung von Notebooks. Damit können Sie eine programmgesteuerte Ausführung eines Notebooks auslösen, ohne die |sf-web-interface|öffnen zu müssen und ohne dass ein wiederkehrender Zeitplan erforderlich ist.
Die Headless-Ausführung ist für Aufgaben, geplante Aufgaben oder Workflows gedacht, die von Tools wie Airflow, Prefect, Dagster, CI/CD-Pipelines oder externen Systemen orchestriert werden, die ein Notebook programmgesteuert ausführen müssen. Weitere Informationen dazu finden Sie unter CREATE NOTEBOOK PROJECT.
Bemerkung
Um die SQL-Befehle in diesem Workflow (z. B. CREATE NOTEBOOK PROJECT und CREATE TASK) auszuführen, müssen Sie sie aus einer SQL-Datei oder einem SQL-Arbeitsblatt in Arbeitsbereichen ausführen und nicht aus einer Notizbuch-Zelle heraus.
