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>
  --snowflake-grpc-max-message-size <message_size>
  --snowflake-grpc-max-metadata-size <metadata_size>
  --workload-status
  --display-logs
  --wait-for-completion
  <application.jar | application.py> [<application_arguments>]
Argumentos¶
application.jar | application.pyCaminho 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¶
--conf [PROP=VALUEPROP=VALUE ...]Propriedade de configuração arbitrária do Spark.
--exclude-packages [EXCLUDE_PACKAGES ...]Lista separada por vírgula de pares groupId:artifactId, a serem excluídos ao resolver as dependências fornecidas em
--packagespara evitar conflitos de dependência.--help, -hMostrar a mensagem de ajuda e sair.
--name NAME Um nome do seu aplicativo.
--properties-file FILECaminho para um arquivo do qual carregar propriedades extras. Se não for especificado, isso procurará por conf/spark-defaults.conf..
--py-files PY_FILESLista separada por vírgulas de arquivos
.zip,.eggou.pypara colocar no PYTHONPATH para aplicativos Python.--verbose, -vImprimir saída adicional de depuração.
--versionImprimir a versão do Spark atual.
Opções específicas do Snowflake¶
--account SNOWFLAKE_ACCOUNTConta do Snowflake a ser usada. Substitui a conta no arquivo
connections.toml, se especificado.--authenticator SNOWFLAKE_AUTHENTICATORAutenticador 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.--comment COMMENTUma mensagem associada à carga de trabalho. Pode ser usado para identificar a carga de trabalho no Snowflake.
--compute-pool SNOWFLAKE_COMPUTE_POOLPool de computação do Snowflake para executar a carga de trabalho fornecida. Substitui o pool de computação no arquivo
connections.toml, se especificado.--database SNOWFLAKE_DATABASE_NAMEBanco de dados do Snowflake a ser usado na sessão. Substitui o banco de dados no arquivo
connections.toml, se especificado.--display-logsSe é necessário imprimir logs do aplicativo para o console quando
--workload-statusé especificado.--external-access-integrations [SNOWFLAKE_EXTERNAL_ACCESS_INTEGRATIONS ...]Integrações de acesso externo do Snowflake exigidas pela carga de trabalho.
--host SNOWFLAKE_HOSTHost para implantação do Snowflake. Substitui o host no arquivo
connections.toml, se especificado.--password SNOWFLAKE_PASSWORDSenha para o usuário do Snowflake. Substitui a senha no arquivo
connections.toml, se especificado.--requirements-file REQUIREMENTS_FILECaminho para um arquivo
requirements.txtque 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. Este parâmetro não funcionará se você também especificar o parâmetro--snowflake-stage.--role SNOWFLAKE_ROLEFunção do Snowflake a ser usada. Substitui a função no arquivo
connections.toml, se especificado.--schema SNOWFLAKE_SCHEMA_NAMEEsquema do Snowflake para usar na sessão. Substitui o esquema no arquivo
connections.toml, se especificado.--snowflake-connection-name SNOWFLAKE_CONNECTION_NAMENome da conexão no arquivo
connections.tomlpara usar como configuração base. Os argumentos de linha de comando substituem quaisquer valores do arquivoconnections.toml.--snowflake-grpc-max-message-size MESSAGE_SIZETamanho máximo da mensagem, em bytes, para comunicação gRPC em Snowpark Submit.
--snowflake-grpc-max-metadata-size METADATA_SIZETamanho máximo de metadados, em bytes, para comunicação gRPC em Snowpark Submit.
--snowflake-log-level SNOWFLAKE_LOG_LEVELNível de log para tabela de eventos do Snowflake –
'INFO','ERROR','NONE'. (Padrão: INFO.)--snowflake-stage SNOWFLAKE_STAGEEstágio do Snowflake onde os arquivos de carga de trabalho são carregados.
--snowflake-workload-name SNOWFLAKE_WORKLOAD_NAMENome da carga de trabalho a ser executada no Snowflake.
--token-file-path SNOWFLAKE_TOKEN_FILE_PATHCaminho para um arquivo contendo o token OAuth para Snowflake. Substitui o caminho do arquivo de token no arquivo
connections.toml, se especificado.--user SNOWFLAKE_USERUsuário do Snowflake a ser usado. Substitui o usuário no arquivo
connections.toml, se especificado.--wait-for-completionNo modo de cluster, quando especificado, executa a carga de trabalho no modo de bloqueio e aguarda a conclusão.
--warehouse SNOWFLAKE_WAREHOUSE_NAMEWarehouse do Snowflake a ser usado na sessão. Substitui o warehouse no arquivo
connections.toml, se especificado.--wheel-files WHEEL_FILESLista 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.
--workload-statusImprimir o status detalhado da carga de trabalho.
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