Ausführen eines Snowpark Container Services-Jobs als Snowflake-Aufgabe¶
Sie können einen Snowpark Container Services:doc:-Jobdienst </developer-guide/snowpark-container-services/working-with-services> als Snowflake-Aufgabe ausführen. Wenn Sie einen Jobdienst als Snowflake-Aufgabe ausführen, ermöglicht die Integration Szenarios, die die robuste Containerisierung und Skalierbarkeit von Snowpark Container Services nutzen. Dieser Prozess wird direkt innerhalb Ihrer geplanten oder durch Ereignisse ausgelösten Datenpipelines ausgeführt, die von Snowflake-Aufgaben verwaltet werden.
Der folgende CREATE TASK-Befehl erstellt beispielsweise eine Aufgabe, die jede Stunde einen Jobdienst ausführt. Der Befehl stellt die Jobdetails unter Verwendung des EXECUTE JOB SERVICE SQL-Befehls bereit:
CREATE TASK job_task
SCHEDULE = '60 MINUTE'
AS
EXECUTE JOB SERVICE
IN COMPUTE POOL my_compute_pool
FROM SPECIFICATION $$
spec:
containers:
- name: main
image: /my_db/my_schema/my_repository/my_job_image:latest
args:
- "--process_data"
$$;
Bemerkung
Snowflake-Jobaufgaben unterstützen das serverlose Modell, sodass Sie in der CREATE TASK-Anweisung kein Warehouse angeben müssen.
Wenn Sie einen Jobdienst als Aufgabe ausführen, sollten Sie den Jobdienst synchron ausführen, da die Aufgabe sonst den Abschluss meldet, bevor der Jobdienst abgeschlossen ist.
Übergeben von Daten in und aus Jobs, die als Aufgaben ausgeführt werden¶
Mit Task-Graphen können Sie komplexe, mehrstufige Datenpipelines erstellen und verwalten, die Jobdienste, die als Aufgaben ausgeführt werden, nahtlos integrieren. Sie können die unterstützten Systemfunktionen in Ihrem Jobdienstcode verwenden, um auf den Aufgabenkontext zuzugreifen und ihn zu verwenden, um die Konfiguration des Task-Graphen und die Laufzeitinformationen der ausführenden Aufgabe abzurufen.
Wenn Sie Jobdienste als Aufgaben ausführen, können Sie die folgenden Data Sharing-Optionen zwischen Aufgaben in einem Task-Graphen verwenden:
Vorgänger-Rückgabewertmechanismus: In einem Task-Graphen können Sie die Ausgabe einer Aufgabe als Eingabe an eine nachfolgende, abhängige Aufgabe übergeben. Snowflake empfiehlt diese Option, wenn Sie kleine Metadaten übergeben, wie z. B. einen Dateipfad, eine Statuszeichenfolge oder einen anderen ID-Wert. Weitere Informationen dazu finden Sie unter Übergeben von Rückgabewerten zwischen Aufgaben.
So wie bei einer SQL-Aufgabe kann ein Job, der als Aufgabe ausgeführt wird, den Rückgabewert einer vorangegangenen Aufgabe abrufen. Ebenso kann ein Job auch einen Rückgabewert für eine nachfolgende Aufgabe liefern.
Allgemeiner persistenter Speichermechanismus: Wenn Sie große Datensets, wie z. B. Dateien, übertragen, empfiehlt Snowflake, die Daten in einem persistenten Speicher, wie z. B. einem Snowflake-Stagingbereich oder einer Tabelle, aufzubewahren und sicherzustellen, dass die Aufgaben in Ihrem Task-Graphen auf den Speicher zugreifen können.
Bemerkung
Sitzungen werden nicht zwischen Jobdiensten gemeinsam genutzt. Daher können Sie keine temporären Tabellen oder Sitzungsvariablen als Möglichkeit zur Freigabe von Daten verwenden, da es sich hierbei um Objekte handelt, die nur für die aktuelle Sitzung gelten.
Beispiel¶
Ein Beispiel dazu finden Sie unter Tutorial: Ausführen eines Snowflake Container Services-Jobs als Snowflake-Aufgabe.