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

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

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy

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
Copy