Snowpark Submit-Referenz¶
Durch Snowpark Submit können Sie die vertraute Spark-Semantik für die Ausführung von nicht-interaktiven, batch-orientierten Spark-Workloads auf Snowflake ausführen.
Bemerkung
Ein Großteil der Funktionen von snowpark-submit ist identisch mit denen von spark-submit. Einige Funktionen wurden jedoch weggelassen, da sie bei der Ausführung von Spark-Workloads in Snowflake nicht benötigt werden.
Syntax¶
snowpark-submit
--name <application_name>
--exclude-packages <package_to_exclude> [, <package_to_exclude>, ...]
--py-files <files_to_place_on_path>
--conf <spark_config_property=value> [<spark_config_property=value> ...]
--properties-file <path_to_properies_file>
--help, -h
--verbose, -v
--version
--account <snowflake_account>
--user <snowflake_user>
--authenticator <snowflake_authenticator>
--token-file-path <snowflake_token_file_path>
--password <snowflake_password>
--role <snowflake_role>
--host <snowflake_host>
--database <snowflake_database_name>
--schema <snowflake_schema_name>
--warehouse <snowflake_warehouse_name>
--compute-pool <snowflake_compute_pool>
--comment <comment>
--snowflake-stage <snowflake_stage>
--external-access-integrations <snowflake_external_access_integrations> [, ...]
--snowflake-log-level <snowflake_log_level>
--snowflake-workload-name <snowflake_workload_name>
--snowflake-connection-name <snowflake_connection_name>
--workload-status
--display-logs
--wait-for-completion
<application.jar | application.py> [<application_arguments>]
Argumente¶
application.jar | application.py
Pfad zu einer -Datei, die die Anwendung und die Abhängigkeiten enthält.
[application arguments]
Anwendungsspezifische Argumente, die an die Hauptmethode der Anwendung übergeben werden.
Optionen¶
--name NAME
Ein Name Ihrer Anwendung.
--exclude-packages [EXCLUDE_PACKAGES ...]
Durch Kommas getrennte Liste von groupId:artifactId-Paaren, die ausgeschlossen werden können, während die in:code:
--packages
angegebenen Abhängigkeiten aufgelöst werden, um Abhängigkeitskonflikte zu vermeiden.--py-files PY_FILES
Durch Kommas getrennte Liste von
.zip
-,.egg
- oder.py
-Dateien, die auf dem PYTHONPATH für Python-Anwendungen platziert werden sollen.--conf [PROP=VALUEPROP=VALUE ...]
Beliebige Eigenschaft der Spark-Konfiguration.
--properties-file FILE
Pfad zu einer Datei, aus der zusätzliche Eigenschaften geladen werden sollen. Wenn nicht angegeben, wird nach conf/spark-defaults.conf gesucht.
--help, -h
Zeigt die Hilfemeldung an und beendet die Anwendung..
--verbose, -v
Gibt die zusätzliche Debug-Ausgabe aus.
--version
Gibt die aktuelle Spark-Version aus.
Snowflake-spezifische Optionen¶
--account SNOWFLAKE_ACCOUNT
Zu verwendendes Snowflake-Konto. Überschreibt das Konto in der
connections.toml
-Datei, falls angegeben.--user SNOWFLAKE_USER
Zu verwendender Snowflake-Benutzer. Überschreibt den Benutzer in der
connections.toml
-Datei, falls angegeben.--authenticator SNOWFLAKE_AUTHENTICATOR
Authentifikator für Snowflake-Anmeldung: Überschreibt den Authentifikator in der
connections.toml
-Datei, falls angegeben. Wenn nichts angegeben wird, wird standardmäßig der Benutzerkennwort-Authentifikator verwendet.--token-file-path SNOWFLAKE_TOKEN_FILE_PATH
Pfad zur Datei mit dem OAuth-Token für Snowflake. Überschreibt den Token-Dateipfad in der
connections.toml
-Datei, falls angegeben.--password SNOWFLAKE_PASSWORD
Kennwort für den Snowflake-Benutzer. Überschreibt das Kennwort in der
connections.toml
-Datei, falls angegeben.--role SNOWFLAKE_ROLE
Zu verwendende Snowflake-Rolle. Überschreibt die Rolle in
connections.toml
-Datei, falls angegeben.--host SNOWFLAKE_HOST
Host für die Snowflake-Bereitstellung. Überschreibt den Host in der
connections.toml
-Datei, falls angegeben.--database SNOWFLAKE_DATABASE_NAME
Snowflake-Datenbank, die in der Sitzung verwendet werden soll. Überschreibt die Datenbank in
connections.toml
-Datei, falls angegeben.--schema SNOWFLAKE_SCHEMA_NAME
Snowflake-Schema, das in der Sitzung verwendet werden soll. Überschreibt das Schema in der
connections.toml
-Datei, falls angegeben.--warehouse SNOWFLAKE_WAREHOUSE_NAME
Snowflake-Warehouse, das in der Sitzung verwendet werden soll. Überschreibt das Warehouse in
connections.toml
-Datei, falls angegeben.--compute-pool SNOWFLAKE_COMPUTE_POOL
Snowflake-Computepool für die Ausführung der bereitgestellten Workload. Überschreibt den Computepool in der
connections.toml
-Datei, falls angegeben.--comment COMMENT
Eine mit der Workload verbundene Meldung. Kann verwendet werden, um die Workload in Snowflake zu ermitteln.
--snowflake-stage SNOWFLAKE_STAGE
Snowflake-Stagingbereich, in den Workload-Dateien hochgeladen werden.
--external-access-integrations [SNOWFLAKE_EXTERNAL_ACCESS_INTEGRATIONS ...]
Snowflake-Integrationen für den externen Zugriff, die für die Workload erforderlich sind.
--snowflake-log-level SNOWFLAKE_LOG_LEVEL
Protokolliergrad für Snowflake-Ereignistabelle –
'INFO'
,'ERROR'
,'NONE'
. (Standard: INFO).--snowflake-workload-name SNOWFLAKE_WORKLOAD_NAME
Name der Workload, die in Snowflake ausgeführt werden soll.
--snowflake-connection-name SNOWFLAKE_CONNECTION_NAME
Name der Verbindung in der
connections.toml
-Datei, die als Basiskonfiguration verwendet werden soll. Befehlszeilenargumente überschreiben alle Werte aus derconnections.toml
-Datei--workload-status
Geben Sie den detaillierten Status der Workload aus.
--display-logs
Legt fest, ob die Anwendungsprotokolle bei Angabe von
--workload-status
auf die Konsole ausgegeben werden sollen.--wait-for-completion
Wenn Sie sich im Clustermodus befinden, führen Sie die Workload, falls angegeben, im Blockierungsmodus aus und warten auf den Abschluss.
--requirements-file REQUIREMENTS_FILE
Pfad zu einer requirements.txt-Datei mit Python-Paketabhängigkeiten, die vor Ausführung der Workload installiert werden sollen. Erfordert die Integration für den externen Zugriff für PyPI.
--wheel-files WHEEL_FILES
Durch Kommas getrennte Liste von .whl-Dateien, die vor Ausführung der Python-Workload installiert werden sollen. Wird für private Abhängigkeiten verwendet, die nicht auf PyPI verfügbar sind.
Gängige Beispiele für Optionen¶
Bereitstellung der Anwendung¶
Snowpark Container Services von Snowflake (SPCS) ist die primäre Infrastruktur für die Ausführung Ihrer Spark-Anwendungen. Sie müssen einen SPCS-Computepool im Voraus erstellt haben.
Grundlegende Python-Anwendung¶
So stellen Sie eine grundlegende Python-Anwendung im Clustermodus bereit:
snowpark-submit \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION_CONFIG_NAME
app.py arg1 arg2
Authentifizierung¶
Snowpark Submit bietet verschiedene Methoden zur Authentifizierung bei Snowflake. Sie müssen mindestens eine Methode verwenden. Verbindungsprofil und direkte Authentifizierung können zusammen oder getrennt verwendet werden. Die Befehlszeilenoption überschreibt die entsprechenden Felder im Verbindungsprofil, wenn sie ebenfalls vorhanden ist.
Verbindungsprofil¶
So verwenden Sie ein vorkonfiguriertes Snowflake-Verbindungsprofil:
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
app.py
Direkte Authentifizierung¶
Benutzername und Kennwort¶
So stellen Sie Authentifizierungsdetails direkt im Befehl bereit:
snowpark-submit \
--host myhost \
--account myaccount \
--user myuser \
--password mypassword \
--role myrole \
--snowflake-workload-name MY_JOB \
app.py
OAuth¶
So führen Sie eine Authentifizierung mithilfe eines OAuth-Token durch:
snowpark-submit \
--host myhost \
--account myaccount \
--authenticator oauth \
--token-file-path /path/to/token.txt \
--snowflake-workload-name MY_JOB \
--compute-pool MY_COMPUTE_POOL \
app.py
Snowflake-Ressourcen¶
So geben Sie die Snowflake-Datenbank, das Schema, das Warehouse und den Computepool für Ihren Job an:
snowpark-submit \
--database MY_DB \
--schema MY_SCHEMA \
--warehouse MY_WH \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Snowflake-Stagingbereiche¶
Sie können mit Snowpark Submit Dateien direkt in einem Snowflake-Stagingbereich speichern und darauf zuzugreifen.
So übermitteln Sie einen Job mit einer Datei in einem Snowflake-Stagingbereich:
snowpark-submit \
--snowflake-stage @my_stage \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
@my_stage/app.py
Verwaltung von Abhängigkeiten¶
Sie können die Abhängigkeiten Ihrer Anwendung verwalten.
Python-Abhängigkeiten¶
So geben Sie zusätzliche Python-Dateien oder -Archive an, die von Ihrer Anwendung benötigt werden:
snowpark-submit \
--py-files dependencies.zip,module.py \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Überwachung und Kontrolle¶
Sie können Ihre Snowpark Submit-Jobs effektiv überwachen und steuern.
Warten auf den Abschluss des Jobs¶
Standardmäßig startet Snowpark Submit den Job und kehrt sofort zurück. So sorgen Sie für die Ausführung im Blockierungsmodus und warten auf das Ende des Jobs:
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
--wait-for-completion \
app.py
Durch das wait-for-completion
-Flag wird der Befehl blockiert, bis der Job abgeschlossen ist (erfolgreich oder mit Fehler), und es werden regelmäßige Statusaktualisierungen angezeigt. Dies ist nützlich für Workflows, bei denen Sie sicherstellen müssen, dass ein Job abgeschlossen wird, bevor Sie mit anderen Aufgaben fortfahren, z. B., wenn Sie Apache Airflow verwenden.
Prüfen des Workload-Status¶
Überprüfen des Status einer Workload („wird ausgeführt“ oder „abgeschlossen“)
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status
Dieser Befehl gibt die folgenden Informationen zur Workload zurück:
Aktueller Stand (
DEPLOYING
,RUNNING
,SUCCEEDED
,FAILED
)Startzeit und Dauer
Details zum Service
Anzeigen von Anwendungsprotokollen¶
So zeigen Sie detaillierte Protokolle mit dem Workload-Status an:
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status --display-logs
Das display-logs
-Flag ruft die Ausgabeprotokolle der Anwendung ab und gibt sie auf der Konsole aus. Mit diesen Protokollen können Sie die folgenden Aufgaben ausführen:
Debuggen von Anwendungsfehlern
Überwachen des Ausführungsfortschritts
Anzeigen der Anwendungsausgabe
Bemerkung
Es gibt eine kleine Latenzzeit – von einigen Sekunden bis zu einer Minute –, bis die Protokolle abgerufen werden können. Wenn keine Ereignistabelle zum Speichern von Protokolldaten verwendet wird, werden die Protokolle für einen kurzen Zeitraum aufbewahrt, z. B. für maximal fünf Minuten.
Erweiterte Konfiguration¶
Fine-Tuning Ihrer Snowpark Submit-Jobs mit erweiterten Konfigurationen.
Integration für externen Zugriff¶
Stellen Sie eine Verbindung zu externen Services von Ihrer Spark-Anwendung aus her:
snowpark-submit \
--external-access-integrations "MY_NETWORK_RULE,MY_STORAGE_INTEGRATION" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py
Konfiguration des Protokolliergrads¶
Steuern Sie den Protokolliergrad Ihrer Anwendung in der Snowflake-Ereignistabelle:
snowpark-submit \
--snowflake-log-level INFO \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Optionen für –snowflake-log-level: INFO, ERROR, NONE.
Hinzufügen von Jobkontext¶
Fügen Sie einen beschreibenden Kommentar hinzu, um die Workload in Snowflake einfacher identifizieren zu können:
snowpark-submit \
--comment "Daily data processing job" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py