Référence Snowpark Submit¶
Avec Snowpark Submit, vous pouvez utiliser la sémantique Spark habituelle pour exécuter des charges de travail Spark non interactives et orientées par lots sur Snowflake.
Note
snowpark-submit prend en charge une grande partie des mêmes fonctionnalités que spark-submit. Cependant, certaines fonctionnalités ont été omises, car elles ne sont pas nécessaires lors de l’exécution de charges de travail Spark sur Snowflake.
Syntaxe¶
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>]
Arguments¶
application.jar | application.py
Chemin d’accès à un fichier contenant l’application et les dépendances.
[application arguments]
Arguments spécifiques à l’application transmis à la méthode principale de l’application.
Options¶
--name NAME
Un nom de votre application.
--exclude-packages [EXCLUDE_PACKAGES ...]
Liste de paires groupId:artifactId, séparées par des virgules, à exclure lors de la résolution des dépendances fournies dans
--packages
pour éviter les conflits de dépendance.--py-files PY_FILES
Liste de fichiers
.zip
,.egg
ou.py
, séparés par des virgules, à placer sur le PYTHONPATH pour les applications Python.--conf [PROP=VALUEPROP=VALUE ...]
Propriété de configuration arbitraire Spark.
--properties-file FILE
Chemin d’accès à un fichier à partir duquel charger des propriétés supplémentaires. S’il n’est pas spécifié, conf/spark-defaults.conf sera recherché.
--help, -h
Afficher le message d’aide et quitter.
--verbose, -v
Imprimer une sortie de débogage supplémentaire.
--version
Imprimer la version actuelle de Spark.
Options spécifiques à Snowflake¶
--account SNOWFLAKE_ACCOUNT
Compte Snowflake à utiliser. Remplace le compte dans le fichier
connections.toml
si spécifié.--user SNOWFLAKE_USER
Utilisateur Snowflake à utiliser. Remplace l’utilisateur dans le fichier
connections.toml
si spécifié.--authenticator SNOWFLAKE_AUTHENTICATOR
Authentificateur pour la connexion Snowflake Remplace l’authentificateur dans le fichier
connections.toml
si spécifié. S’il n’est pas spécifié, devient par défaut l’authentificateur de mot de passe utilisateur.--token-file-path SNOWFLAKE_TOKEN_FILE_PATH
Chemin d’accès à un fichier contenant le jeton OAuth pour Snowflake. Remplace le chemin d’accès au fichier de jetons dans le fichier
connections.toml
si spécifié.--password SNOWFLAKE_PASSWORD
Mot de passe de l’utilisateur Snowflake. Remplace le mot de passe dans le fichier
connections.toml
si spécifié.--role SNOWFLAKE_ROLE
Rôle Snowflake à utiliser. Remplace le rôle dans le fichier
connections.toml
si spécifié.--host SNOWFLAKE_HOST
Hôte pour le déploiement de Snowflake. Remplace l’hôte dans le fichier
connections.toml
si spécifié.--database SNOWFLAKE_DATABASE_NAME
Base de données Snowflake à utiliser dans la session. Remplace la base de données dans le fichier
connections.toml
si spécifié.--schema SNOWFLAKE_SCHEMA_NAME
Schéma Snowflake à utiliser dans la session. Remplace le schéma dans le fichier
connections.toml
si spécifié.--warehouse SNOWFLAKE_WAREHOUSE_NAME
Entrepôt Snowflake à utiliser dans la session. Remplace l’entrepôt dans le fichier
connections.toml
si spécifié.--compute-pool SNOWFLAKE_COMPUTE_POOL
Pool de calcul Snowflake pour l’exécution de la charge de travail fournie. Remplace le pool de calcul dans le fichier
connections.toml
si spécifié.--comment COMMENT
Un message associé à la charge de travail. Peut être utilisé pour identifier la charge de travail dans Snowflake.
--snowflake-stage SNOWFLAKE_STAGE
Zone de préparation Snowflake où les fichiers de charge de travail sont importés.
--external-access-integrations [SNOWFLAKE_EXTERNAL_ACCESS_INTEGRATIONS ...]
Intégrations d’accès externes Snowflake requises par la charge de travail.
--snowflake-log-level SNOWFLAKE_LOG_LEVEL
Niveau de journalisation pour la table d’événements Snowflake (
'INFO'
,'ERROR'
,'NONE'
). (Par défaut : INFO).--snowflake-workload-name SNOWFLAKE_WORKLOAD_NAME
Nom de la charge de travail à exécuter dans Snowflake.
--snowflake-connection-name SNOWFLAKE_CONNECTION_NAME
Nom de la connexion dans le fichier
connections.toml
à utiliser comme configuration de base. Les arguments de ligne de commande remplaceront toutes les valeurs du fichierconnections.toml
.--workload-status
Imprimer le statut détaillé de la charge de travail.
--display-logs
S’il faut imprimer les journaux d’application dans la console lorsque
--workload-status
est spécifié.--wait-for-completion
En mode cluster, lorsque spécifié, exécutez la charge de travail en mode bloquant et et attendez qu’elle soit terminée.
--requirements-file REQUIREMENTS_FILE
Chemin d’accès à un fichier requirements.txt contenant les dépendances du paquet Python à installer avant d’exécuter la charge de travail. Nécessite une intégration d’accès externe pour PyPI.
--wheel-files WHEEL_FILES
Liste de fichiers .whl, séparés par des virgules, à installer avant d’exécuter la charge de travail Python. Utilisé pour les dépendances privées non disponibles sur PyPI.
Exemples d’options communes¶
Déploiement d’application¶
Snowpark Container Services de Snowflake (SPCS) est l’infrastructure principale pour l’exécution de vos applications Spark. Vous devez avoir créé un pool de calcul SPCS au préalable.
Application Python de base¶
Pour déployer une application Python de base en mode cluster :
snowpark-submit \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION_CONFIG_NAME
app.py arg1 arg2
Authentification¶
Snowpark Submit propose diverses méthodes pour s’authentifier auprès de Snowflake. Vous devez utiliser au moins une méthode. Le profil de connexion et l’authentification directe peuvent être utilisés ensemble ou séparément. L’option de ligne de commande remplace les champs correspondants dans le profil de connexion lorsqu’elle est également présente.
Profil de connexion¶
Pour utiliser un profil de connexion Snowflake préconfiguré :
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
app.py
Authentification directe¶
Nom d’utilisateur et mot de passe¶
Pour fournir des détails d’authentification directement dans la commande :
snowpark-submit \
--host myhost \
--account myaccount \
--user myuser \
--password mypassword \
--role myrole \
--snowflake-workload-name MY_JOB \
app.py
OAuth¶
Pour s’authentifier à l’aide d’un jeton OAuth :
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
Ressources Snowflake¶
Pour spécifier la base de données, le schéma, l’entrepôt et le pool de calcul Snowflake pour votre tâche :
snowpark-submit \
--database MY_DB \
--schema MY_SCHEMA \
--warehouse MY_WH \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Zones de préparation Snowflake¶
Vous pouvez utiliser Snowpark Submit pour stocker des fichiers et y accéder directement sur une zone de préparation Snowflake.
Pour soumettre une tâche à l’aide d’un fichier sur une zone de préparation Snowflake :
snowpark-submit \
--snowflake-stage @my_stage \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
@my_stage/app.py
Gestion des dépendances¶
Vous pouvez gérer les dépendances de votre application.
Dépendances Python¶
Pour spécifier des fichiers ou des archives Python supplémentaires qui sont nécessaires à votre application :
snowpark-submit \
--py-files dependencies.zip,module.py \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Surveillance et contrôle¶
Vous pouvez surveiller et contrôler vos tâches Snowpark Submit de manière efficace.
En attente de l’achèvement de la tâche¶
Par défaut, Snowpark Submit lance la tâche et renvoie immédiatement. Pour exécuter en mode bloquant et attendre la fin de la tâche :
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
--wait-for-completion \
app.py
L’indicateur wait-for-completion
provoque le blocage de la commande jusqu’à ce que la tâche soit terminée (avec succès ou en cas d’échec), affichant des mises à jour périodiques du statut. Cela est utile pour les workflows où vous devez vous assurer qu’une tâche est terminée avant de poursuivre avec d’autres tâches, comme lorsque vous utilisez Apache Airflow.
Vérification du statut de la charge de travail¶
Vérifiez le statut d’une charge de travail (en cours d’exécution ou terminée).
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status
Cette commande renvoie les informations suivantes à propos de la charge de travail :
État actuel (
DEPLOYING
,RUNNING
,SUCCEEDED
,FAILED
)Heure de début et durée
Informations sur le service
Affichage des journaux d’application¶
Pour consulter les journaux détaillés ainsi que le statut de la charge de travail :
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status --display-logs
L’indicateur display-logs
récupérera et imprimera les journaux de sortie de l’application dans la console. Grâce à ces journaux, vous pouvez effectuer les tâches suivantes :
Déboguer les erreurs de l’application
Surveiller la progression de l’exécution
Consulter la sortie de l’application
Note
Il existe un léger délai (de quelques secondes à une minute) avant que les journaux soient prêts à être récupérés. Lorsqu’une table d’événements n’est pas utilisée pour stocker les données des journaux, les journaux sont conservés pendant une courte période, par exemple cinq minutes ou moins.
Configuration avancée¶
Réglez vos tâches Snowpark Submit avec des configurations avancées.
Intégration de l’accès externe¶
Connectez-vous aux services externes à partir de votre application Spark :
snowpark-submit \
--external-access-integrations "MY_NETWORK_RULE,MY_STORAGE_INTEGRATION" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py
Configuration du niveau de journalisation¶
Contrôlez le niveau de journalisation de votre application dans la table d’événements Snowflake :
snowpark-submit \
--snowflake-log-level INFO \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Options relatives au niveau de journalisation Snwoflake (snowflake-log-level) : INFO, ERROR, NONE.
Ajout d’un contexte de tâche¶
Ajoutez un commentaire descriptif pour faciliter l’identification de la charge de travail dans Snowflake :
snowpark-submit \
--comment "Daily data processing job" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py