Todos os produtos
Search
Central de documentação

:Guia de configuração de aplicações Spark

Última atualização: Jul 04, 2026

As aplicações Spark no AnalyticDB for MySQL Enterprise Edition, Basic Edition e Data Lakehouse Edition são descritas no formato JSON. O script de configuração contém todas as informações sobre as aplicações, incluindo nome da aplicação, caminho do pacote JAR e parâmetros de configuração. Este tópico descreve como configurar uma aplicação Spark.

Precauções

O Enterprise Edition, Basic Edition e Data Lakehouse Edition está atualmente em versão canary. Para solicitar um teste do Enterprise Edition, Basic Edition e Data Lakehouse Edition, Envie um ticket.

Aplicações em lote

O Spark suporta aplicações batch, streaming e SQL. A execução de uma aplicação batch exige os pacotes JAR ou arquivos Python que contêm a classe de entrada. Dependendo dos requisitos do seu negócio, também podem ser necessários pacotes JAR adicionais para a aplicação, sandboxes Python e parâmetros da classe de entrada.

Escreva uma aplicação Spark em lote no AnalyticDB for MySQL usando parâmetros de linha de comando semelhantes aos da ferramenta spark-submit.

Exemplo de configuração de aplicação em lote

O exemplo a seguir mostra uma aplicação Spark em lote típica que lê dados do Object Storage Service (OSS). O script de configuração inclui parâmetros como nome da aplicação, pacotes JAR com a classe de entrada, a própria classe de entrada e seus parâmetros, além dos parâmetros de execução. Esse script é escrito no formato JSON. Exemplo:

 {
  "args": ["oss://${testBucketName}/data/test/test.csv"],
  "name": "spark-oss-test",
  "file": "oss://${testBucketName/jars/test/spark-examples-0.0.1-SNAPSHOT.jar",
  "className": "com.aliyun.spark.oss.SparkReadOss",
  "conf": {
    "spark.driver.resourceSpec": "medium",
    "spark.executor.resourceSpec": "medium",
    "spark.executor.instances": 2,
    "spark.adb.connectors": "oss"
  }
}

A tabela a seguir descreve os parâmetros usados na configuração de aplicações em lote.

Parâmetro

Obrigatório

Exemplo

Descrição

args

Não

"args":["args0", "args1"]

Parâmetros de entrada da aplicação Spark. Separe múltiplos parâmetros com vírgulas (,).

name

Não

"name": "your_job_name"

Nome da aplicação Spark.

file

Sim, para aplicações escritas em Python, Java ou Scala

"file":"oss://testBucketName/path/to/your/jar"

Caminho onde o arquivo principal da aplicação Spark está armazenado. O arquivo principal pode ser um pacote JAR contendo a classe de entrada ou um arquivo executável de entrada em Python.

Nota

Os arquivos principais das aplicações Spark devem ser armazenados no OSS.

className

Sim, para aplicações escritas em Java ou Scala

"className":"com.aliyun.spark.oss.SparkReadOss"

Classe de entrada do programa Java ou Scala. Não é necessária para Python.

sqls

Sim, para aplicações SQL

"sqls":["select * from xxxx","show databases"]

Instruções SQL usadas para enviar diretamente aplicações SQL em lote, sem necessidade de especificar pacotes JAR ou arquivos Python. Este parâmetro não pode ser usado junto com os parâmetros file, className ou args. É possível especificar várias instruções SQL para uma aplicação Spark, separando-as por vírgulas (,). A execução segue a ordem definida.

jars

Não

"jars":["oss://testBucketName/path/to/jar","oss://testBucketName/path/to/jar"]

Pacotes JAR necessários para a aplicação Spark. Separe múltiplos pacotes JAR com vírgulas (,). Durante a execução da aplicação, esses pacotes são adicionados aos classpaths das máquinas virtuais Java (JVMs) do driver e dos executores.

Nota

Todos os pacotes JAR necessários para aplicações Spark devem ser armazenados no OSS.

files

Não

"files":["oss://testBucketName/path/to/files","oss://testBucketName/path/to/files"]

Arquivos necessários para a aplicação Spark. Eles são baixados para os diretórios de trabalho do driver e dos executores.

É possível configurar aliases para esses arquivos. Exemplo: oss://testBucketName/test/test1.txt#test1. Nesse caso, test1 funciona como alias do arquivo, permitindo acesso via ./test1 ou ./test1.txt.

Separe múltiplos arquivos com vírgulas (,).

Nota
  • Se o arquivo log4j.properties no diretório oss://<path/to>/ for especificado neste parâmetro, a aplicação Spark usará o arquivo log4j.properties como configuração de log.

  • Todos os arquivos necessários para aplicações Spark devem ser armazenados no OSS.

archives

Não

"archives":["oss://testBucketName/path/to/archives","oss://testBucketName/path/to/archives"]

Pacotes compactados necessários para a aplicação Spark, obrigatoriamente no formato .TAR.GZ. A descompactação ocorre no diretório de trabalho do processo Spark.

Aliases podem ser configurados para os arquivos dentro do pacote. Exemplo: oss://testBucketName/test/test1.tar.gz#test1. Aqui, test1 serve como alias. Se test2.txt estiver dentro de test1.tar.gz, o acesso será feito por ./test1/test2.txt ou ./test1.tar.gz/test2.txt.

Separe múltiplos pacotes com vírgulas (,).

Nota

Todos os pacotes compactados necessários para aplicações Spark devem residir no OSS. Falhas na descompactação causam falha na tarefa.

pyFiles

Não, para aplicações Python

"pyFiles":["oss://testBucketName/path/to/pyfiles","oss://testBucketName/path/to/pyfiles"]

Arquivos Python necessários para a aplicação PySpark, nos formatos ZIP, PY ou EGG. Quando houver vários arquivos, recomenda-se usar ZIP ou EGG. Referencie-os no código Python como módulos. Separe múltiplos pacotes com vírgulas (,).

Nota

Todos os arquivos Python necessários para aplicações PySpark devem ser armazenados no OSS.

conf

Sim

"conf":{"spark.driver.resourceSpec": "medium",spark.executor.resourceSpec":"medium,"spark.executor.instances": 2,"spark.adb.connectors": "oss"}

Parâmetros de configuração necessários para a aplicação Spark, similares aos do Apache Spark. Devem seguir o formato key: value, separados por vírgulas (,). Para detalhes sobre parâmetros diferentes dos do Apache Spark ou específicos do AnalyticDB for MySQL, consulte a seção "Descrição dos parâmetros conf" deste tópico.

Aplicações SQL

O AnalyticDB for MySQL permite enviar aplicações Spark SQL diretamente pelo console, sem precisar empacotar instruções em um arquivo JAR ou escrever código Python. Isso facilita a análise de dados com Spark pelos desenvolvedores. Ao enviar uma aplicação Spark SQL, defina o tipo de aplicação como SQL.

Exemplo de configuração de aplicação SQL

-- Here is just an example of SparkSQL. Modify the content and run your spark program.

conf spark.driver.resourceSpec=medium;
conf spark.executor.instances=2;
conf spark.executor.resourceSpec=medium;
conf spark.app.name=Spark SQL Test;
conf spark.adb.connectors=oss;

-- Here are your sql statements
show databases;

Tipos de instrução suportados pelo Spark SQL

Edite as instruções SQL no editor Spark. Cada instrução individual deve terminar com ponto e vírgula (;).

O Spark SQL suporta os seguintes tipos de instrução:

  • Instruções CONF

    • Use instruções CONF antes das instruções SQL para definir configurações do Spark.

    • Cada instrução CONF define o valor de um parâmetro para envio da aplicação Spark. Separe cada instrução CONF individual com ponto e vírgula (;).

    • Não coloque as chaves e os valores das instruções CONF entre aspas simples (') ou duplas (").

    • Para mais informações sobre os parâmetros de configuração suportados pelas instruções CONF, consulte a seção "Descrição dos parâmetros conf" deste tópico.

  • Instruções ADD JAR

    • Insira instruções ADD JAR antes das instruções SQL para adicionar pacotes JAR necessários à execução de comandos Spark SQL, como pacotes de funções definidas pelo usuário (UDFs) e conectores de fontes de dados. Especifique os pacotes JAR usando o formato de caminho do OSS.

    • Cada instrução ADD JAR aponta para um pacote JAR no formato de caminho do OSS. Não é necessário envolver o caminho com aspas simples (') ou duplas ("). Separe cada instrução ADD JAR com ponto e vírgula (;).

  • Instruções DDL ou DML suportadas pelo Spark SQL, incluindo SELECT e INSERT.

Alternar o serviço de metadados

Por padrão, o Spark SQL utiliza o serviço de metadados fornecido pelo AnalyticDB for MySQL. Para mudar para outro serviço de metadados, use um dos métodos abaixo:

  • Catálogo em memória

    CONF spark.sql.catalogImplementation = in-memory;
  • Hive metastore 2.3.7 ou outras versões integradas ao Spark

    CONF spark.sql.catalogImplementation = hive;
    CONF spark.sql.hive.metastore.version = 2.3.7;
    Nota

    Para conectar-se a um Hive metastore autogerenciado, substitua a configuração padrão pela configuração padrão do Apache Spark. Para mais detalhes sobre essa configuração, consulte Configuração do Spark.

Descrição dos parâmetros conf

Os parâmetros de configuração do Spark no AnalyticDB for MySQL assemelham-se aos do Apache Spark. As tabelas a seguir detalham os parâmetros do AnalyticDB for MySQL que diferem do Apache Spark e aqueles exclusivos do AnalyticDB for MySQL.

  • Recursos especificados para driver e executor

    Importante

    O uso dos parâmetros descritos na tabela a seguir difere do Apache Spark.

    Defina os parâmetros spark.driver.resourceSpec e spark.executor.resourceSpec com o mesmo valor.

    Parâmetro

    Descrição

    Parâmetro correspondente no Apache Spark

    spark.driver.resourceSpec

    Especificações de recurso do driver Spark. Cada tipo corresponde a uma especificação distinta. Para mais informações, veja a coluna Tipo na seção "Especificações de recursos do Spark" deste tópico.

    Exemplo: CONF spark.driver.resourceSpec = c.small;. Neste exemplo, o driver Spark utiliza 1 núcleo e 2 GB de memória.

    spark.driver.cores e spark.driver.memory

    spark.executor.resourceSpec

    Especificações de recurso de cada executor Spark. Cada tipo corresponde a uma especificação distinta. Consulte a coluna Tipo na seção "Especificações de recursos do Spark" deste tópico.

    Exemplo: CONF spark.executor.resourceSpec = c.small;. Aqui, cada executor Spark ocupa 1 núcleo e 2 GB de memória.

    spark.executor.cores e spark.executor.memory

  • Spark UI

    Parâmetro

    Valor padrão

    Descrição

    spark.app.log.rootPath

    Nenhum

    Diretório onde os logs de eventos da Spark UI e os logs gerados pelas aplicações Spark do AnalyticDB for MySQL são armazenados. Especifique manualmente um caminho do OSS para este parâmetro. Caso contrário, não será possível acessar a Spark UI nem visualizar os logs da aplicação.

  • Operações e manutenção de usuários RAM

    Parâmetro

    Valor padrão

    Descrição

    spark.adb.roleArn

    Nenhum

    Alibaba Cloud Resource Name (ARN) da função do Resource Access Management (RAM) com permissões para enviar aplicações Spark no Console RAM. Para mais informações, consulte Visão geral. Este parâmetro só é necessário ao enviar aplicações Spark como usuário RAM.

  • Conectores de fonte de dados integrados no Spark do AnalyticDB for MySQL

    Parâmetro

    Valor padrão

    Descrição

    spark.adb.connectors

    Nenhum

    Nomes dos conectores integrados no Spark do AnalyticDB for MySQL. Separe os nomes dos conectores com vírgulas (,). Valores válidos: OSS, hbase1.x e tablestore.

    spark.hadoop.io.compression.codec.snappy.native

    false

    Indica se um arquivo Snappy está no formato Snappy padrão. Por padrão, o Hadoop reconhece arquivos Snappy editados nele. Se definido como true, usa-se a biblioteca Snappy padrão para descompressão; caso contrário, utiliza-se a biblioteca Snappy padrão do Hadoop.

  • Acesso VPC e conexão à fonte de dados

    Parâmetro

    Valor padrão

    Descrição

    spark.adb.eni.vswitchId

    Nenhum

    ID do vSwitch associado a uma interface de rede elástica (ENI), usado para acessar uma Virtual Private Cloud (VPC). Se sua instância do Elastic Compute Service (ECS) consegue acessar a fonte de dados de destino, defina este parâmetro como o ID do vSwitch ao qual a instância ECS está conectada.

    spark.adb.eni.securityGroupId

    Nenhum

    ID do grupo de segurança associado a uma ENI, utilizado para acesso à VPC. Caso sua instância ECS tenha acesso à fonte de dados desejada, configure este parâmetro com o ID do grupo de segurança ao qual ela pertence.

    spark.adb.eni.extraHosts

    Nenhum

    Mapeamentos entre endereços IP e hostnames, permitindo que o Spark resolva os hostnames das fontes de dados. Obrigatório ao conectar-se a uma fonte de dados Hive autogerenciada.

    Nota

    Separe endereços IP e hostnames com espaços. Separe múltiplos grupos de IPs e hostnames com vírgulas (,). Exemplo: "ip0 master0, ip1 master1".

  • Conexão do Spark SQL aos metadados do AnalyticDB for MySQL

    Parâmetro

    Valor padrão

    Descrição

    spark.sql.hive.metastore.version

    Nenhum

    Versão do Hive metastore. Se definido como ADB, permite acessar os metadados do AnalyticDB for MySQL e ler dados de tabelas do AnalyticDB for MySQL.

  • Novas tentativas de aplicação

    Parâmetro

    Valor padrão

    Descrição

    spark.adb.maxAttempts

    1

    Número máximo de novas tentativas. O valor padrão é 1, indicando que a aplicação Spark não tenta novamente após falha.

    Se definido como 3, a aplicação fará até três novas tentativas dentro de uma janela deslizante.

    spark.adb.attemptFailuresValidityInterval

    Long.MAX

    Duração da janela deslizante, em milissegundos.

    Por exemplo, se definido como 6000, o sistema conta as tentativas nos últimos 6.000 milissegundos após uma falha. Se o número de tentativas for menor que o valor de spark.adb.maxAttempts, o sistema continua tentando executar a aplicação.

  • Configuração de origem

    Parâmetro

    Valor padrão

    Descrição

    spark.adb.driver.cpu-vcores-ratio

    1

    Proporção de vCPUs para núcleos de cpu reais usados pelo driver. Por exemplo, se o driver usa especificações de recurso medium (2 núcleos e 8 GB de memória) e você define este parâmetro como 2, ele poderá executar 4 vCPUs em paralelo. Definir spark.driver.cores como 4 produz o mesmo desempenho.

    spark.adb.executor.cpu-vcores-ratio

    1

    Proporção de vCPUs para núcleos de cpu reais usados por um executor. Se a utilização da cpu de uma tarefa estiver baixa, ajuste este parâmetro para aumentá-la. Por exemplo, se um executor usa especificações medium (2 núcleos e 8 GB de memória) e você define este parâmetro como 2, ele executará 4 vCPUs em paralelo, agendando 4 tarefas simultaneamente. Definir spark.executor.cores como 4 alcança o mesmo resultado.

Especificações de recursos do Spark

Tipo

Especificações

Núcleos de CPU

Memória (GB)

c.small

1

2

small

1

4

m.small

1

8

c.medium

2

4

medium

2

8

m.medium

2

16

c.large

4

8

large

4

16

m.large

4

32

c.xlarge

8

16

xlarge

8

32

m.xlarge

8

64

c.2xlarge

16

32

2xlarge

16

64

m.2xlarge

16

128