Snowpark Submit-Beispiele¶
Dieses Thema enthält Beispiele, die mit Snowpark Submit produktionsbereite Spark-Anwendungen übermitteln.
Eine einfache Spark-Anwendung schreiben und übermitteln¶
Das folgende Beispiel zeigt, wie Sie eine einfache Spark-Anwendung ohne Abhängigkeiten schreiben und übermitteln.
Erstellen Sie in Ihrer lokalen IDE eine neue Python-Datei namens
app.pymit folgendem Inhalt:Um die Anwendung zu übermitteln, verwenden Sie den folgenden Befehl:
Sie können die
--wait-for-completion-Option verwenden, um auf die abschließende Ausführung des Jobs zu warten, die--workload-status-Option, um den Status des Jobs zu prüfen, und die--display-logs-Option, um die Protokolle des Jobs anzuzeigen. Eine vollständige Liste der Optionen finden Sie unter Snowpark Submit-Referenz.
Bereitstellen einer Anwendung aus einem Snowflake-Stagingbereich heraus¶
Wenn die Anwendung Abhängigkeiten hat, wie z. B. Dateien, die sie lesen muss, können Sie diese über einen Snowflake-Stagingbereich bereitstellen. Das folgende Beispiel zeigt, wie Sie eine Anwendung und ihre Abhängigkeiten aus einem Snowflake-Stagingbereich bereitstellen.
Um Dateien vom Terminal in einen Stagingbereich hochzuladen, können Sie die Snowflake-CLI verwenden. Beachten Sie, dass SnowSQL die alte CLI ist, und wenn Sie sie bereits verwenden, können Sie diese auch verwenden, um Dateien in einen Stagingbereich hochzuladen. Wenn Sie die Snowflake-CLI noch nicht installiert haben, können Sie sie installieren, indem Sie die Anweisungen unter Installieren von Snowflake CLI befolgen.
Erstellen Sie eine neue CSV-Datei in Ihrer lokalen IDE namens
sample_employees.csvmit folgendem Inhalt:Laden Sie Ihre Abhängigkeitsdateien in einen Stagingbereich hoch, indem Sie den folgenden Befehl verwenden, wobei
my_stageder Name eines Stagingbereichs in Ihrem Konto ist. (Wenn Sie keinen Stagingbereich erstellt haben, können Sie [snow stage create](/developer-guide/snowflake-cli/command-reference/stage-commands/create).) verwenden.Um zu überprüfen, ob die Datei erfolgreich hochgeladen wurde, können Sie den folgenden Befehl verwenden, um die im Stagingbereich befindlichen Dateien aufzulisten:
Sie sollten die Datei
sample_employees.csvin der Liste sehen.Erstellen Sie in Ihrer lokalen IDE eine neue Python-Datei namens
app.pymit folgendem Inhalt:Um die Anwendung zu übermitteln, die die Dateien verwendet, die Sie in den Stagingbereich hochgeladen haben, verwenden Sie den folgenden Befehl:
Beachten Sie, dass ein Computepool erforderlich ist, um die Anwendung auszuführen. Dieser muss entweder in der Datei
connections.tomloder in der Befehlszeile mit der Option--compute-poolangegeben sein. Weitere Informationen dazu finden Sie unter Snowpark Submit-Referenz.
Überwachen mit Warten und Protokollen¶
Das folgende Beispiel zeigt, wie Sie einen Job übermitteln, auf dessen Beendigung warten und dann Protokolle abrufen.
Übermitteln Sie den Job, und warten Sie auf die Fertigstellung, indem Sie den folgenden Befehl verwenden:
Wenn der Job fehlschlägt, überprüfen Sie die detaillierten Protokolleinträge mit dem folgenden Befehl:
Verwenden Sie Snowpark Submit in einem Apache Airflow DAG¶
Sie können einen Spark-Job über Snowpark Connect for Spark an Snowflake senden. Sie können snowpark-submit im Clustermodus verwenden, um einen Computepool zur Ausführung des Jobs zu nutzen.
Wenn Sie Apache Airflow auf diese Weise verwenden, muss der Docker-Dienst oder der Snowpark Container Services-Container, auf dem Apache Airflow ausgeführt wird, ordnungsgemäßen Zugriff auf Snowflake und die erforderlichen Dateien im Snowflake-Stagingbereich haben.
Mit dem Code im folgenden Beispiel wird die folgende Aufgabe ausgeführt:
Erstellt eine virtuelle Python-Umgebung unter
/tmp/myenv.In der
create_venv-Aufgabe verwendet der Codepipzur Installation dessnowpark-submit-Pakets mithilfe einer.whl-Datei.Erzeugt eine sichere
connections.toml-Datei mit Snowflake-Verbindungsdaten und einem OAuth-Token.In der
create_connections_toml-Aufgabe erstellt der Code das Verzeichnis/app/.snowflake, erstellt die.toml-Datei und ändert dann die Dateiberechtigungen so, dass nur der Eigentümer (Benutzer) Lese- und Schreibzugriff hat.Führt einen Spark-Job mit dem Befehl snowpark-submit aus.
In der Aufgabe
run_snowpark_scriptmacht der Code Folgendes:Aktiviert die virtuelle Umgebung.
Führt den Spark-Job mit dem Befehl snowpark-submit aus.
Führt eine Bereitstellung in Snowflake im Clustermodus durch.
Es wird die Snowpark Connect for Spark-Remote-URI sc://localhost:15002 verwendet.
Gibt die Spark-Anwendungsklasse
org.example.SnowparkConnectAppan.Ruft das Skript aus dem Stagingbereich @snowflake_stage ab.
Blockiert mit
--wait-for-completiondie Bereitstellung, bis der Job beendet ist.
Sie können DAG mithilfe der Task-Graph-Ansicht oder der Strukturbaum-Ansicht der Apache Airflow-Benutzeroberfläche überwachen. Überprüfen Sie die Aufgabenprotokolle auf die folgenden Elemente:
Einrichtung der Umgebung
Status von Snowpark Connect for Spark
Ausgabe des Jobs mit snowpark-submit
Sie können Jobs, die in Snowflake ausgeführt wurden, auch anhand der im Snowflake-Stagingbereich gespeicherten Protokolle oder anhand von Ereignistabellen überwachen.