Todos os produtos
Search
Central de documentação

E-MapReduce:Submit a Spark job using spark-submit

Última atualização: Jun 27, 2026

Este tópico descreve como enviar um job do Spark com a ferramenta de linha de comando spark-submit do EMR Serverless Spark. O exemplo utiliza uma instância ECS para se conectar ao EMR Serverless Spark.

Pré-requisitos

  • Java Development Kit (JDK) 1.8 ou posterior instalado.

  • Se você utilizar um usuário RAM para enviar um job do Spark, adicione-o ao workspace do EMR Serverless Spark e conceda a ele uma função de desenvolvedor ou superior. Para mais informações, consulte Gerenciar usuários e funções.

Procedimento

Etapa 1: Baixe e instale a ferramenta spark-submit do EMR Serverless

  1. Clique em emr-serverless-spark-tool-1.16.0-bin.zip para baixar o pacote de instalação.

  2. Faça upload do pacote de instalação para sua instância ECS. Para mais informações, consulte Fazer upload ou download de arquivos.

  3. Execute o comando a seguir para descompactar a ferramenta spark-submit do EMR Serverless.

    unzip emr-serverless-spark-tool-1.16.0-bin.zip

Etapa 2: Configure os parâmetros

Importante

Em ambientes com Spark instalado, se a variável de ambiente SPARK_CONF_DIR estiver definida, coloque o arquivo de configuração no diretório especificado por SPARK_CONF_DIR. Por exemplo, em um cluster EMR, esse diretório geralmente é /etc/taihao-apps/spark-conf. Caso contrário, o sistema retornará um erro.

  1. Execute o comando a seguir para modificar a configuração no arquivo connection.properties.

    vim emr-serverless-spark-tool-1.16.0/conf/connection.properties
  2. Configure o arquivo conforme o exemplo abaixo, utilizando parâmetros no formato key=value.

    accessKeyId=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    accessKeySecret=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    regionId=cn-hangzhou
    endpoint=emr-serverless-spark.cn-hangzhou.aliyuncs.com
    workspaceId=w-xxxxxxxxxxxx
    Importante

    O usuário RAM ou a função associada a este AccessKey deve ter autorização no RAM e estar adicionado ao workspace do EMR Serverless Spark.

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Obrigatório

    Descrição

    accessKeyId

    Sim

    AccessKey ID e AccessKey Secret da conta Alibaba Cloud ou do usuário RAM que executa o job do Spark.

    Importante

    Ao configurar os parâmetros accessKeyId e accessKeySecret, certifique-se de que o usuário associado ao AccessKey tenha permissões de leitura e gravação no OSS Bucket vinculado ao workspace. Visualize o OSS Bucket vinculado na página Spark clicando em Details na coluna Actions do workspace.

    accessKeySecret

    Sim

    regionId

    Sim

    ID da região. Este exemplo utiliza a região China (Hangzhou).

    endpoint

    Sim

    Endpoint do EMR Serverless Spark. Para mais informações, consulte Endpoints.

    Este exemplo usa o endpoint público da região China (Hangzhou). O valor do parâmetro é emr-serverless-spark.cn-hangzhou.aliyuncs.com.

    Nota

    Se sua instância ECS não tiver acesso à internet, use um endpoint de VPC.

    workspaceId

    Sim

    ID do workspace do EMR Serverless Spark.

Etapa 3: Envie um job do Spark

  1. Execute o comando a seguir para acessar o diretório da ferramenta spark-submit do EMR Serverless.

    cd emr-serverless-spark-tool-1.16.0
  2. Selecione um método de envio com base no tipo do seu job.

    Ao enviar um job, especifique os recursos de arquivo dos quais ele depende, como um pacote JAR ou script Python. Armazene esses recursos no OSS ou localmente. Todos os exemplos deste tópico utilizam recursos no OSS.

    spark-submit

    A ferramenta spark-submit é um utilitário de envio de tarefas de uso geral fornecido pelo Spark para tarefas Java/Scala e PySpark.

    Jobs Java/Scala

    Este exemplo utiliza spark-examples_2.12-3.5.2.jar. Clique em spark-examples_2.12-3.5.2.jar para baixar o pacote JAR de teste e faça upload dele para o OSS. Trata-se de um exemplo simples integrado ao Spark que calcula o valor de pi (π).

    Nota

    Use o arquivo spark-examples_2.12-3.5.2.jar com a versão de engine esr-4.x para enviar jobs. Se estiver utilizando a versão de engine esr-5.x, baixe spark-examples_2.13-4.0.1.jar para este exemplo.

    ./bin/spark-submit  --name SparkPi \
    --queue dev_queue  \
    --num-executors 5 \
    --driver-memory 1g \
    --executor-cores 2 \
    --executor-memory 2g \
    --class org.apache.spark.examples.SparkPi \
     oss://<yourBucket>/path/to/spark-examples_2.12-3.5.2.jar \
    10000

    Jobs PySpark

    Este exemplo utiliza DataFrame.py e employee.csv. Clique em DataFrame.py e employee.csv para baixar os arquivos de teste e faça upload deles para o OSS.

    Nota
    • DataFrame.py é um trecho de código que usa o framework Apache Spark para processar dados no OSS.

    • employee.csv é um arquivo de dados contendo nomes de funcionários, departamentos e salários.

    ./bin/spark-submit --name PySpark \
    --queue dev_queue  \
    --num-executors 5 \
    --driver-memory 1g \
    --executor-cores 2 \
    --executor-memory 2g \
    --conf spark.tags.key=value \
    oss://<yourBucket>/path/to/DataFrame.py \
    oss://<yourBucket>/path/to/employee.csv

    Os parâmetros estão descritos abaixo.

    • Parâmetros open source suportados

      Parâmetro

      Exemplo

      Descrição

      --name

      SparkPi

      Nome da aplicação para o job do Spark.

      --class

      org.apache.spark.examples.SparkPi

      Classe de entrada para o job do Spark. Obrigatório para aplicações Java ou Scala, mas não necessário para Python.

      --num-executors

      5

      Quantidade de executores para o job do Spark.

      --driver-cores

      1

      Número de núcleos do driver para o job do Spark.

      --driver-memory

      1g

      Quantidade de memória do driver para o job do Spark.

      --executor-cores

      2

      Número de núcleos do executor para o job do Spark.

      --executor-memory

      2g

      Quantidade de memória do executor para o job do Spark.

      --files

      oss://<yourBucket>/file1,oss://<yourBucket>/file2

      Arquivos de recurso necessários para o job do Spark. Podem ser armazenados no OSS ou localmente. Separe múltiplos arquivos com vírgulas (,).

      --py-files

      oss://<yourBucket>/file1.py,oss://<yourBucket>/file2.py

      Scripts Python necessários para o job do Spark. Podem ser armazenados no OSS ou localmente. Separe múltiplos arquivos com vírgulas (,). Exclusivo para aplicações PySpark.

      --jars

      oss://<yourBucket>/file1.jar,oss://<yourBucket>/file2.jar

      Pacotes JAR necessários para o job do Spark. Podem ser armazenados no OSS ou localmente. Separe múltiplos arquivos com vírgulas (,).

      --archives

      oss://<yourBucket>/archive.tar.gz#env,oss://<yourBucket>/archive2.zip

      Arquivos compactados necessários para o job do Spark. Podem ser armazenados no OSS ou localmente. Separe múltiplos arquivos com vírgulas (,).

      --queue

      root_queue

      Nome da fila onde o job do Spark será executado. Deve corresponder exatamente ao nome definido na seção de gerenciamento de filas do seu workspace EMR Serverless Spark.

      --proxy-user

      test

      O valor definido substitui a variável de ambiente HADOOP_USER_NAME, mantendo comportamento consistente com a versão open source.

      --conf

      spark.tags.key=value

      Parâmetro personalizado para o job do Spark.

      --status

      jr-8598aa9f459d****

      Verifica o status do job do Spark.

      --kill

      jr-8598aa9f459d****

      Encerra o job do Spark.

    • Parâmetros aprimorados

      Parâmetro

      Exemplo

      Descrição

      --detach

      Não requer valor

      Faz com que o spark-submit encerre imediatamente após o envio do job, sem aguardar o status da execução.

      --detail

      jr-8598aa9f459d****

      Exibe os detalhes do job do Spark.

      --release-version

      esr-4.1.1 (Spark 3.5.2, Scala 2.12)

      Especifica a versão do Spark. Insira o número da versão da engine exibido no console.

      --enable-template

      Não requer valor

      Ativa o recurso de modelo. O job utilizará o modelo de configuração padrão do workspace.

      Se você criou uma configuração em Configurations dentro de Configuration management, especifique seu ID adicionando spark.emr.serverless.templateId ao parâmetro --conf. O job aplicará diretamente o modelo especificado. Para mais informações sobre criação de modelos, consulte Gerenciamento de configurações.

      • Ao especificar apenas --enable-template, a tarefa aplica automaticamente o modelo de configuração padrão do workspace.

      • Usar apenas --conf para especificar o ID do modelo: A tarefa aplica diretamente o ID do modelo indicado.

      • Especificar tanto --enable-template quanto --conf: Se ambos forem definidos (--enable-template e --conf spark.emr.serverless.templateId), o ID do modelo em --conf substitui o modelo padrão.

      • Nenhum parâmetro especificado: Sem o uso de --enable-template ou --conf spark.emr.serverless.templateId, o job não aplicará nenhuma configuração de modelo.

      --timeout

      60

      Tempo limite do job, em segundos.

      --workspace-id

      w-4b4d7925a797****

      Define o ID do workspace no nível do job. Isso substitui o parâmetro workspaceId no arquivo connection.properties.

    • Parâmetros open source não suportados

      • --deploy-mode

      • --master

      • --repositories

      • --keytab

      • --principal

      • --total-executor-cores

      • --driver-library-path

      • --driver-class-path

      • --supervise

      • --verbose

    spark-sql

    A ferramenta spark-sql é específica para executar consultas ou scripts SQL diretamente.

    • Exemplo 1: Executar uma instrução SQL diretamente

      spark-sql -e "SHOW TABLES"

      Este comando lista todas as tabelas no banco de dados atual.

    • Exemplo 2: Executar um arquivo de script SQL

      spark-sql -f oss://<yourBucketname>/path/to/your/example.sql

      Este exemplo utiliza example.sql. Clique em example.sql para baixar o arquivo de teste e faça upload dele para o OSS.

      Conteúdo de exemplo do arquivo example.sql

      CREATE TABLE IF NOT EXISTS employees (
          id INT,
          name STRING,
          age INT,
          department STRING
      );
      INSERT INTO employees VALUES
      (1, 'Alice', 30, 'Engineering'),
      (2, 'Bob', 25, 'Marketing'),
      (3, 'Charlie', 35, 'Sales');
      SELECT * FROM employees;
      

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Exemplo

    Descrição

    -e "<sql>"

    -e "SELECT * FROM table"

    Executa uma instrução SQL inline a partir da linha de comando.

    -f <path>

    -f oss://path/script.sql

    Executa um arquivo de script SQL a partir de um caminho especificado.

Etapa 4: Consulte um job do Spark

CLI

Consultar status do job

cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --status <jr-8598aa9f459d****>

Consultar detalhes do job

cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --detail <jr-8598aa9f459d****>

UI

  1. Na página EMR Serverless Spark, clique em Job History no painel de navegação à esquerda.

  2. Na página Job History, acesse a aba Development Job Runs para visualizar os jobs enviados.

    A lista de jobs inclui as colunas Job name/Job run ID, Status, Tags, Submission time e Actions. Na coluna Actions, clique em Stop, Details ou Spark UI.

(Opcional) Etapa 5: Encerre um job do Spark

cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --kill <jr-8598aa9f459d****>
Nota

É possível encerrar apenas jobs no estado running.

Perguntas frequentes

Como especifico uma conexão de rede ao enviar um job em lote com a ferramenta spark-submit?

  1. Crie uma conexão de rede. Para mais informações, consulte Adicionar uma conexão de rede.

  2. No comando spark-submit, utilize --conf para especificar a conexão de rede.

    --conf spark.emr.serverless.network.service.name=<networkname>

    Substitua <networkname> pelo nome da sua conexão de rede.