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>]
Copy

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 der connections.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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

Ü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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy