Referência de Snowpark Submit¶
Com Snowpark Submit, você pode usar a semântica familiar do Spark para executar cargas de trabalho não interativas e orientadas a lotes do Spark no Snowflake.
Nota
:comando:`snowpark-submit` oferece suporte a muitas das mesmas funcionalidades que o :comando:`snowpark-submit`. No entanto, algumas funcionalidades foram omitidas por não serem necessárias ao executar cargas de trabalho do Spark no Snowflake.
Sintaxe¶
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>]
Argumentos¶
application.jar | application.py
Caminho para um arquivo que contém o aplicativo e as dependências.
[application arguments]
Argumentos específicos do aplicativo passados para o método principal do aplicativo.
Opções¶
--name NAME
Um nome do seu aplicativo.
--exclude-packages [EXCLUDE_PACKAGES ...]
Lista separada por vírgula de pares groupId:artifactId, a serem excluídos ao resolver as dependências fornecidas em
--packages
para evitar conflitos de dependência.--py-files PY_FILES
Lista separada por vírgulas de arquivos
.zip
,.egg
ou.py
para colocar no PYTHONPATH para aplicativos Python.--conf [PROP=VALUEPROP=VALUE ...]
Propriedade de configuração arbitrária do Spark.
--properties-file FILE
Caminho para um arquivo do qual carregar propriedades extras. Se não for especificado, isso procurará por conf/spark-defaults.conf..
--help, -h
Mostrar a mensagem de ajuda e sair.
--verbose, -v
Imprimir saída adicional de depuração.
--version
Imprimir a versão do Spark atual.
Opções específicas do Snowflake¶
--account SNOWFLAKE_ACCOUNT
Conta do Snowflake a ser usada. Substitui a conta no arquivo
connections.toml
, se especificado.--user SNOWFLAKE_USER
Usuário do Snowflake a ser usado. Substitui o usuário no arquivo
connections.toml
, se especificado.--authenticator SNOWFLAKE_AUTHENTICATOR
Autenticador para login do Snowflake. Substitui o autenticador no arquivo
connections.toml
, se especificado. Se não for especificado, o padrão é o autenticador de senha do usuário.--token-file-path SNOWFLAKE_TOKEN_FILE_PATH
Caminho para um arquivo contendo o token OAuth para Snowflake. Substitui o caminho do arquivo de token no arquivo
connections.toml
, se especificado.--password SNOWFLAKE_PASSWORD
Senha para o usuário do Snowflake. Substitui a senha no arquivo
connections.toml
, se especificado.--role SNOWFLAKE_ROLE
Função do Snowflake a ser usada. Substitui a função no arquivo
connections.toml
, se especificado.--host SNOWFLAKE_HOST
Host para implantação do Snowflake. Substitui o host no arquivo
connections.toml
, se especificado.--database SNOWFLAKE_DATABASE_NAME
Banco de dados do Snowflake a ser usado na sessão. Substitui o banco de dados no arquivo
connections.toml
, se especificado.--schema SNOWFLAKE_SCHEMA_NAME
Esquema do Snowflake para usar na sessão. Substitui o esquema no arquivo
connections.toml
, se especificado.--warehouse SNOWFLAKE_WAREHOUSE_NAME
Warehouse do Snowflake a ser usado na sessão. Substitui o warehouse no arquivo
connections.toml
, se especificado.--compute-pool SNOWFLAKE_COMPUTE_POOL
Pool de computação do Snowflake para executar a carga de trabalho fornecida. Substitui o pool de computação no arquivo
connections.toml
, se especificado.--comment COMMENT
Uma mensagem associada à carga de trabalho. Pode ser usado para identificar a carga de trabalho no Snowflake.
--snowflake-stage SNOWFLAKE_STAGE
Estágio do Snowflake onde os arquivos de carga de trabalho são carregados.
--external-access-integrations [SNOWFLAKE_EXTERNAL_ACCESS_INTEGRATIONS ...]
Integrações de acesso externo do Snowflake exigidas pela carga de trabalho.
--snowflake-log-level SNOWFLAKE_LOG_LEVEL
Nível de log para tabela de eventos do Snowflake –
'INFO'
,'ERROR'
,'NONE'
. (Padrão: INFO.)--snowflake-workload-name SNOWFLAKE_WORKLOAD_NAME
Nome da carga de trabalho a ser executada no Snowflake.
--snowflake-connection-name SNOWFLAKE_CONNECTION_NAME
Nome da conexão no arquivo
connections.toml
para usar como configuração base. Os argumentos de linha de comando substituirão quaisquer valores do arquivoconnections.toml
.--workload-status
Imprimir o status detalhado da carga de trabalho.
--display-logs
Se é necessário imprimir logs do aplicativo para o console quando
--workload-status
é especificado.--wait-for-completion
No modo de cluster, quando especificado, executa a carga de trabalho no modo de bloqueio e aguarda a conclusão.
--requirements-file REQUIREMENTS_FILE
Caminho para um arquivo requirements.txt que contém dependências do pacote Python a serem instaladas antes de executar a carga de trabalho. Exige integração de acesso externo para PyPI.
--wheel-files WHEEL_FILES
Lista separada por vírgulax de arquivos .wthl a serem instalados antes de executar a carga de trabalho Python. Usado para dependências privadas não disponíveis no PyPI.
Exemplos de opções comuns¶
Implantação de aplicativo¶
Snowpark Container Services do Snowflake (SPCS) é a infraestrutura principal para executar seus aplicativos Spark. Você precisa ter criado um pool de computação SPCS antecipadamente.
Aplicativo Python básico¶
Para implantar um aplicativo Python básico no modo de cluster:
snowpark-submit \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION_CONFIG_NAME
app.py arg1 arg2
Autenticação¶
Snowpark Submit oferece vários métodos de autenticação com o Snowflake. Você deve usar pelo menos um método. O perfil de conexão e a autenticação direta podem ser usados juntos ou separadamente. A opção de linha de comando substitui os campos correspondentes no perfil de conexão quando ele também está presente.
Perfil de conexão¶
Para usar um perfil de conexão Snowflake pré-configurado:
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
app.py
Autenticação direta¶
Nome de usuário e senha¶
Para fornecer detalhes de autenticação diretamente no comando:
snowpark-submit \
--host myhost \
--account myaccount \
--user myuser \
--password mypassword \
--role myrole \
--snowflake-workload-name MY_JOB \
app.py
OAuth¶
Para autenticar usando um token 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
Recursos do Snowflake¶
Para especificar o banco de dados, esquema, warehouse e pool de computação do Snowflake para o seu trabalho:
snowpark-submit \
--database MY_DB \
--schema MY_SCHEMA \
--warehouse MY_WH \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Estágios do Snowflake¶
Você pode usar Snowpark Submit para armazenar e acessar arquivos diretamente em um estágio do Snowflake.
Para enviar um trabalho usando um arquivo em um estágio do Snowflake:
snowpark-submit \
--snowflake-stage @my_stage \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
@my_stage/app.py
Gerenciamento de dependências¶
Você pode gerenciar as dependências do seu aplicativo.
Dependências do Python¶
Para especificar arquivos mortos ou arquivos do Python adicionais necessários para seu aplicativo:
snowpark-submit \
--py-files dependencies.zip,module.py \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Monitoramento e controle¶
Você pode monitorar e controlar seus trabalhos Snowpark Submit de forma eficaz.
Espera pela conclusão do trabalho¶
Por padrão, Snowpark Submit inicia o trabalho e retorna imediatamente. Para executar no modo de bloqueio e aguardar a conclusão do trabalho:
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
--wait-for-completion \
app.py
O sinalizador wait-for-completion
faz com que o comando seja bloqueado até que o trabalho seja concluído (com sucesso ou com falha), mostrando atualizações de status periódicas. Isso é útil para fluxos de trabalho em que você precisa garantir que um trabalho seja concluído antes de prosseguir com outras tarefas, como quando você usa o Apache Airflow.
Verificação do status da carga de trabalho¶
Verificar o status de uma carga de trabalho (em execução ou concluído).
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status
Este comando retorna as seguintes informações sobre a carga de trabalho:
Estado atual (
DEPLOYING
,RUNNING
,SUCCEEDED
,FAILED
)Hora de início e duração
Detalhes do serviço
Visualização de logs do aplicativo¶
Para visualizar logs detalhados junto com o status da carga de trabalho:
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status --display-logs
O sinalizador display-logs
buscará e imprimirá os logs de saída do aplicativo no console. Usando esses logs, você pode executar as seguintes tarefas:
Depuração de erros de aplicativos
Monitoramento do progresso de execução
Exibição da saída do aplicativo
Nota
Há uma pequena latência, de alguns segundos a um minuto, para que os logs estejam prontos para busca. Quando uma tabela de eventos não é usada para armazenar dados de log, os logs são retidos por um curto período, como cinco minutos ou menos.
Configuração avançada¶
Ajuste fino de seus trabalhos Snowpark Submit com configurações avançadas.
Integração de acesso externo¶
Conecte-se a serviços externos por meio de seu aplicativo Spark:
snowpark-submit \
--external-access-integrations "MY_NETWORK_RULE,MY_STORAGE_INTEGRATION" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py
Configuração do nível de registro em log¶
Controle o nível de registro em log do seu aplicativo para a tabela de eventos do Snowflake:
snowpark-submit \
--snowflake-log-level INFO \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Opções para –snowflake-log-level: INFO, ERROR, NONE.
Como adicionar contexto de trabalho¶
Adicione um comentário descritivo para facilitar a identificação da carga de trabalho no Snowflake:
snowpark-submit \
--comment "Daily data processing job" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py