Todos os produtos
Search
Central de documentação

AnalyticDB:Parâmetros de configuração de aplicações Spark

Última atualização: Jul 15, 2026

Os parâmetros de configuração do Spark no AnalyticDB for MySQL são semelhantes aos do Apache Spark. Este tópico descreve os parâmetros de configuração do AnalyticDB for MySQL que diferem dos parâmetros do Apache Spark.

Observações de uso

Os parâmetros de configuração de aplicações Spark servem para ajustar o comportamento e o desempenho dessas aplicações. O formato desses parâmetros varia conforme a ferramenta de desenvolvimento Spark utilizada.

Ferramenta de desenvolvimento

Formato do parâmetro de configuração

Exemplo de configuração

Editor SQL

set key=value;

set spark.sql.hive.metastore.version=adb;

Editor Spark Jar

"key": "value"

"spark.sql.hive.metastore.version":"adb"

Editor Notebook

"key": "value"

"spark.sql.hive.metastore.version":"adb"

Interface de linha de comando spark-submit

key=value

spark.sql.hive.metastore.version=adb

Especifique recursos de Driver e Executor

Parâmetro

Obrigatório

Valor padrão

Descrição

Parâmetro correspondente no Apache Spark

spark.adb.acuPerApp

Não

Nenhum

Número de ACUs utilizadas por um único job Spark. Valores válidos: [2, Recursos máximos de computação de um grupo de recursos de job].

Após configure este parâmetro, o sistema calcula e define automaticamente as especificações do Spark Driver, as especificações do Spark Executor e o número de nós do Spark Executor.

Clique em para visualize a estratégia de configuração de spark.adb.acuPerApp

  • Ao configurar simultaneamente spark.adb.acuPerApp e todos os outros parâmetros de recursos (incluindo spark.driver.resourceSpec, spark.executor.resourceSpec e spark.executor.instances), spark.adb.acuPerApp torna-se inválido e os valores dos demais parâmetros permanecem inalterados.

  • Ao configurar apenas spark.adb.acuPerApp, esse parâmetro entra em vigor e todos os outros parâmetros de recursos são calculados e definidos automaticamente com base nele.

  • Em outras combinações de configuração, spark.adb.acuPerApp permanece válido. O sistema calcula automaticamente os parâmetros de recursos não definidos explicitamente (spark.driver.resourceSpec, spark.executor.resourceSpec e spark.executor.instances) com base nesse valor. Os parâmetros configurados explicitamente mantêm seus valores originais.

N/A

spark.driver.resourceSpec

Sim

medium

Especificações de recursos do driver Spark. Cada tipo corresponde a especificações distintas. Para mais informações, consulte a coluna Tipo na tabela Especificações de recursos do Spark deste tópico.

Importante

Caso envie aplicações Spark, utilize os parâmetros do Apache Spark e configure-os com base nos valores de núcleos e memória descritos na tabela Especificações de recursos do Spark deste tópico.

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

spark.driver.cores e spark.driver.memory

spark.executor.resourceSpec

Sim

medium

Especificações de recursos de cada executor Spark. Cada tipo corresponde a especificações distintas. Para mais informações, consulte a coluna Tipo na tabela Especificações de recursos do Spark deste tópico.

Importante

Caso envie aplicações Spark, utilize os parâmetros do Apache Spark e configure-os com base nos valores de núcleos e memória descritos na tabela Especificações de recursos do Spark deste tópico.

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

spark.executor.cores e spark.executor.memory

spark.executor.instances

Não

Recursos máximos de computação de um grupo de recursos de job/5

Quantidade de executores Spark iniciados.

spark.executor.instances

spark.adb.driverDiskSize

Não

Nenhum

Tamanho do armazenamento adicional em disco montado no driver Spark para atender a grandes demandas de armazenamento. Por padrão, o armazenamento adicional é montado no diretório /user_data_dir.

Unidade: GiB. Valores válidos: (0.100]. Exemplo: spark.adb.driverDiskSize=50Gi. Neste exemplo, o armazenamento adicional em disco montado no driver Spark é definido como 50 GiB.

N/A

spark.adb.executorDiskSize

Não

Nenhum

Tamanho do armazenamento adicional em disco montado em um executor Spark para atender aos requisitos de operações shuffle. Por padrão, o armazenamento adicional é montado no diretório /shuffle_volume.

Unidade: GiB. Valores válidos: (0.100]. Exemplo: spark.adb.executorDiskSize=50Gi. Neste exemplo, o armazenamento adicional em disco montado em um executor Spark é definido como 50 GiB.

N/A

Especificações de recursos do Spark

Importante

Utilize recursos reservados ou recursos elásticos para execute jobs Spark. Caso utilize recursos elásticos sob demanda de um grupo de recursos de job para execute jobs Spark, o sistema calcula o número de unidades de computação do AnalyticDB (ACUs) utilizadas com base nas especificações de recursos do Spark e na proporção CPU-memória, utilizando as seguintes fórmulas:

  • Proporção CPU-memória 1:2: Número de ACUs utilizadas = Número de núcleos de CPU × 0,8.

  • Proporção CPU-memória 1:4: Número de ACUs utilizadas = Número de núcleos de CPU × 1.

  • Proporção CPU-memória 1:8: Número de ACUs utilizadas = Número de núcleos de CPU × 1,5.

Para obter informações sobre os preços de recursos elásticos sob demanda, consulte Preços da Data Lakehouse Edition.

Tabela 1. Especificações de recursos do Spark

Tipo

Especificações

ACUs utilizadas

Núcleos de CPU

Memória (GB)

Armazenamento em disco1 (GB)

c.small

1

2

20

0,8

small

1

4

20

1

m.small

1

8

20

1,5

c.medium

2

4

20

1,6

medium

2

8

20

2

m.medium

2

16

20

3

c.large

4

8

20

3,2

large

4

16

20

4

m.large

4

32

20

6

c.xlarge

8

16

20

6,4

xlarge

8

32

20

8

m.xlarge

8

64

20

12

c.2xlarge

16

32

20

12,8

2xlarge

16

64

20

16

m.2xlarge

16

128

20

24

m.4xlarge

32

256

20

48

m.8xlarge

64

512

20

96

Nota

1Armazenamento em disco: O sistema ocupa aproximadamente 1% do armazenamento em disco. O armazenamento disponível real pode ser inferior a 20 GB.

Exemplo

Aloque 32 Executors para um job Spark, sendo que cada Executor possui especificação medium (2 núcleos, 8 GB) e cada Driver possui especificação small (1 núcleo, 4 GB). Nesse caso, todo o job pode alocar um total de 65 ACUs de recursos de computação.

{
   "spark.driver.resourceSpec":"small",
   "spark.executor.resourceSpec":"medium",
   "spark.executor.instances":"32",
   "spark.adb.executorDiskSize":"100Gi"
}

Defina prioridades para jobs Spark

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.priority

Não

NORMAL

Prioridade de um job Spark. Se os recursos forem insuficientes para execute todos os jobs Spark enviados, os jobs na fila com maior prioridade serão executados primeiro. Valores válidos:

  • HIGH: Alta prioridade.

  • NORMAL: Prioridade normal.

  • LOW: Baixa prioridade.

  • LOWEST: Prioridade mais baixa.

Importante

Recomendamos defina este parâmetro como HIGH para jobs Spark de streaming (jobs de stream de longa duração).

Acesse os metadados

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.sql.catalogImplementation

Não

  • Jobs Spark SQL: hive.

  • Jobs não Spark SQL: in-memory.

Tipo de metadados a serem acessados. Valores válidos:

  • hive: metadados no Hive Metastore integrado do Apache Spark.

  • in-memory: metadados no diretório temporário.

spark.sql.hive.metastore.version

Não

  • Jobs Spark SQL: adb.

  • Jobs não Spark SQL: <hive_version>.

Versão do service metastore. Valores válidos:

  • adb: Conecta-se aos metadados do AnalyticDB for MySQL.

  • <hive_version>: versão do Hive Metastore.

Nota
  • Para obter informações sobre as versões do Hive suportadas pelo Apache Spark, consulte Configuração do Spark.

  • Para acessar um Hive Metastore autogerenciado, substitua a configuração padrão pela configuração padrão do Apache Spark. Para mais informações, consulte Configuração do Spark.

Exemplos

  • Configure a seguinte definição para acessar os metadados no AnalyticDB for MySQL:

    spark.sql.hive.metastore.version=adb;
  • Configure as seguintes definições para acessar os metadados no Hive Metastore integrado do Apache Spark:

    spark.sql.catalogImplementation=hive;
    spark.sql.hive.metastore.version=2.1.3;
  • Configure a seguinte definição para acessar os metadados no diretório temporário:

    spark.sql.catalogImplementation=in-memory;

Configure a Spark UI

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.app.log.rootPath

Não

oss://<aliyun-oa-adb-spark-Alibaba Cloud account ID-oss-Zone ID>/<Cluster ID>/<Spark application ID>

Diretório onde os logs de job do AnalyticDB for MySQL Spark e os dados de saída do sistema operacional Linux são armazenados.

Por padrão, a pasta nomeada com o ID da aplicação Spark contém o seguinte conteúdo:

  • O arquivo chamado Spark application ID-000X, que armazena os logs de eventos do Spark usados para renderização da Spark UI.

  • As pastas chamadas driver e números, que armazenam os logs dos nós correspondentes.

  • As pastas chamadas stdout e stderr, que armazenam os dados de saída do sistema operacional Linux.

spark.adb.event.logUploadDuration

Não

false

Define se a duração do upload de um log de evento deve ser registrada.

spark.adb.buffer.maxNumEvents

Não

1.000

Número máximo de eventos armazenados em cache pelo driver.

spark.adb.payload.maxNumEvents

Não

10.000

Número máximo de eventos que podem ser enviados ao Object Storage Service (OSS) por vez.

spark.adb.event.pollingIntervalSecs

Não

0,5

Intervalo entre dois uploads de eventos para o OSS. Unidade: segundos. Por exemplo, um valor de 0,5 indica que os eventos são enviados a cada 0,5 segundos.

spark.adb.event.maxPollingIntervalSecs

Não

60

Intervalo máximo de nova tentativa quando falha o upload de um evento para o OSS. Unidade: segundos. O intervalo entre uma falha de upload e uma nova tentativa deve estar dentro do intervalo dos valores de spark.adb.event.pollingIntervalSecs a spark.adb.event.maxPollingIntervalSecs.

spark.adb.event.maxWaitOnEndSecs

Não

10

Tempo máximo de espera para upload de eventos para o OSS. Unidade: segundos. O tempo máximo de espera é o intervalo entre o início e a conclusão de um upload. Se o upload não for concluído dentro do tempo máximo de espera, uma nova tentativa será realizada.

spark.adb.event.waitForPendingPayloadsSleepIntervalSecs

Não

1

Tempo de espera necessário para tentar novamente um upload que não foi concluído dentro do valor de spark.adb.event.maxWaitOnEndSecs. Unidade: segundos.

spark.adb.eventLog.rolling.maxFileSize

Não

209.715.200

Tamanho máximo de arquivo de logs de eventos no OSS. Unidade: bytes. Os logs de eventos são armazenados no OSS na forma de múltiplos arquivos, como Eventlog.0 e Eventlog.1. É possível especifique o tamanho do arquivo.

Conceda permissões a usuários RAM

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.roleArn

Não

N/A

ARN (Alibaba Cloud Resource Name) da função do Resource Access Management (RAM) que você deseja anexar ao usuário RAM no console RAM para conceder ao usuário RAM as permissões necessárias para submit aplicações Spark. Para mais informações, consulte Visão geral das funções RAM. Caso submit aplicações Spark como usuário RAM, especifique este parâmetro. Se submit aplicações Spark com uma conta Alibaba Cloud, não é necessário especifique este parâmetro.

Nota

Se já tiver concedido permissões a um usuário RAM no console RAM, não será necessário especifique este parâmetro. Para mais informações, consulte Autorização de conta.

Ative os conectores de source de dados integrados

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.connectors

Não

N/A

Nomes dos conectores integrados do AnalyticDB for MySQL Spark que você deseja ative. Separe vários nomes com vírgulas (,). Valores válidos: oss, hudi, delta, adb, odps, external_hive, jindo e default.

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

Não

false

Define se um arquivo Snappy está no formato Snappy padrão. Por padrão, o Hadoop reconhece os arquivos Snappy editados no Hadoop. Se defina este parâmetro como true, a biblioteca Snappy padrão será usada para descompressão. Se defina como false, a biblioteca Snappy padrão do Hadoop será usada para descompressão.

Ative o acesso VPC e o acesso à source de dados

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.eni.enabled

Não

false

Define se a Elastic Network Interface (ENI) deve ser ativada.

Caso utilize tabelas externas para acessar outras fontes de dados externas, ative a ENI. Valores válidos:

  • true: Ativar

  • false: Desativar

spark.adb.eni.vswitchId

Não

N/A

ID do vSwitch associado a uma ENI.

Ao conectar-se ao AnalyticDB for MySQL a partir de uma instância do Elastic Compute Service (ECS) via virtual private cloud (VPC), especifique um ID de vSwitch para a VPC.

Nota

Caso tenha ativado o acesso VPC, defina o parâmetro spark.adb.eni.enabled como true.

spark.adb.eni.securityGroupId

Não

N/A

ID do grupo de segurança associado a uma ENI.

Ao conectar-se ao AnalyticDB for MySQL a partir de uma instância ECS via VPC, especifique um ID de grupo de segurança.

Nota

Caso tenha ativado o acesso VPC, defina o parâmetro spark.adb.eni.enabled como true.

spark.adb.eni.extraHosts

Não

N/A

Mapeamentos entre endereços IP e nomes de host. Este parâmetro permite que o Spark resolva os nomes de host das fontes de dados. Para acessar uma source de dados Hive autogerenciada, especifique este parâmetro.

Nota
  • Separe endereços IP e nomes de host com espaços. Separe vários grupos de endereços IP e nomes de host com vírgulas (,). Exemplo: ip0 master0,ip1 master1.

  • Caso tenha ativado o acesso à source de dados, defina o parâmetro spark.adb.eni.enabled como true.

spark.adb.eni.adbHostAlias.enabled

Não

false

Define se as informações de resolução de nome de domínio exigidas pelo AnalyticDB for MySQL devem ser gravadas automaticamente em uma tabela de mapeamento de nomes de domínio e endereços IP. Valores válidos:

  • true: Ativar.

  • false: Desativar.

Ao utilizar uma ENI para ler ou gravar dados no EMR Hive, defina este parâmetro como true.

Configure novas tentativas de aplicação

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.maxAttempts

Não

1

Número máximo de tentativas permitidas para execute uma aplicação. O valor padrão é 1, o que indica que nenhuma nova tentativa é permitida.

Caso defina este parâmetro como 3 para uma aplicação Spark, o sistema tentará execute a aplicação até três vezes dentro de uma janela deslizante.

spark.adb.attemptFailuresValidityInterval

Não

Integer.MAX

Duração da janela deslizante na qual o sistema tenta reexecute uma aplicação. Unidade: segundos.

Por exemplo, ao defina este parâmetro como 6.000 para uma aplicação Spark, o sistema contará o número de tentativas nos últimos 6.000 segundos após uma execução com falha. Se o número de tentativas for menor que o valor do parâmetro maxAttempts, o sistema tentará execute a aplicação novamente.

Encerramento automático de job por tempo limite de agendamento (Scheduling Watchdog)

Quando os pods Executor de um job permanecem no estado Pending por um longo período devido à insuficiência de recursos subjacentes (como esgotamento de estoque ECI, estouro de cota de recursos ou afinidade de nó não atendível), o job continua aguardando, o que desperdiça recursos do Driver e bloqueia agendamentos subsequentes. Após ative este recurso, quando tanto a proporção de Executors não agendáveis quanto o tempo de espera atingirem os limiares especificados, o sistema marcará automaticamente o job como falho e liberará recursos para atingir um comportamento de falha rápida.

Cenários

Este recurso é adequado para cenários em que você execute um grande número de jobs Spark em um cluster compartilhado e deseja que os jobs falhem rapidamente em vez de esperar indefinidamente quando os recursos forem insuficientes. Os cenários típicos incluem:

  • Recursos ECI insuficientes: Ao usar Elastic Container Instance (ECI) para execute Executors, o estoque insuficiente para os tipos de instância subjacentes faz com que os pods permaneçam no estado Pending por muito tempo.

  • Estouro de cota de recursos: A cota de CPU ou memória do namespace ou grupo de recursos se esgota, impedindo o agendamento de novos Executors.

  • Novas tentativas rápidas para jobs em lote: Você deseja que os jobs falhem rapidamente quando os recursos estiverem indisponíveis, permitindo que um sistema de agendamento de camada superior (como o Airflow) decida a estratégia de nova tentativa.

Método de configuração

Ao submit um job Spark, configure os seguintes parâmetros para ative e ajustar o comportamento do Watchdog.

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.terminateOnPending.enabled

Obrigatório quando o recurso está ativado

false

Define se o encerramento automático de job por tempo limite de agendamento deve ser ativado para o job. Valores válidos:

  • true: ativa o recurso.

  • false (padrão): desativa o recurso.

Este recurso vem desativado por padrão. Ele e os outros parâmetros só entram em vigor após você defina este parâmetro como true.

spark.adb.terminateOnPending.timeoutSec

Não

610

Tempo de tolerância durante o qual um pod Executor permanece no estado Pending. Unidade: segundos. O cronômetro inicia quando um pod Executor é detectado pela primeira vez como não agendável. Quando o tempo de espera excede este valor e a condição spark.adb.terminateOnPending.executorRatio também é atendida, o job é encerrado.

Valores recomendados: 610 a 900.

spark.adb.terminateOnPending.executorRatio

Não

0,5

Limiar para a proporção de Executors não agendáveis que aciona o encerramento. Intervalo válido: (0, 1,0]. A proporção é calculada dividindo o número de Executors não agendáveis pelo número total esperado de Executors. Quando a proporção atinge este valor e o tempo de Pending excede spark.adb.terminateOnPending.timeoutSec, o job é encerrado.

Um valor menor torna o acionamento mais sensível, e um valor maior torna o acionamento mais tolerante:

  • 0,3: aciona o encerramento quando 30% dos Executors não são agendáveis. Adequado para jobs sensíveis à latência.

  • 0,5 (padrão): aciona o encerramento quando metade dos Executors não é agendável.

  • 0,8 a 1,0: aciona o encerramento apenas quando a maioria ou todos os Executors não são agendáveis. Adequado para ambientes com recursos dinamicamente flutuantes.

O número total esperado de Executors é determinado com base na seguinte prioridade:

  1. spark.executor.instances (alocação estática).

  2. spark.dynamicAllocation.initialExecutors (valor inicial para alocação dinâmica).

  3. spark.dynamicAllocation.maxExecutors (valor máximo para alocação dinâmica).

  4. Se nenhum dos parâmetros anteriores estiver configurado, o número atual de pods não agendáveis será usado.

Importante

O encerramento é acionado apenas quando ambas as condições spark.adb.terminateOnPending.executorRatio e spark.adb.terminateOnPending.timeoutSec são atendidas. O encerramento não ocorre se apenas o tempo de espera for excedido, mas a proporção não for atingida, ou se apenas a proporção for atingida, mas o tempo de espera for insuficiente.

Exemplo de configuração: ative o encerramento automático de job por tempo limite de agendamento para um job e encerre o job quando metade dos Executors permanecer não agendável por mais de 300 segundos.

{
   "spark.adb.terminateOnPending.enabled":"true",
   "spark.adb.terminateOnPending.timeoutSec":"300",
   "spark.adb.terminateOnPending.executorRatio":"0.5"
}

Comportamento do job após o encerramento

Após o acionamento do encerramento, o job comporta-se da seguinte maneira:

  • Estado do job: O SparkApplication entra primeiro em FailingState e depois muda para FailedState.

  • Mensagem de erro: status.appState.errorMessage contém informações estruturadas de diagnóstico de falha.

  • Pod Driver: O pod Driver é excluído proativamente para liberar recursos.

O exemplo a seguir mostra uma mensagem de erro:

[ResourceQuotaExceeded] executors unschedulable: 5/10 (50%) for 5m12s; threshold ratio≥50%, age≥5m0s
denom=10 (spec.executor.instances), distinct reasons=1, oldest pod=my-job-exec-3 (pending since 2026-06-01T10:16:34Z)
scheduler reason: Unschedulable
scheduler message: 0/1279 nodes are available: quota not enough, quotaName: amv-x

O conteúdo entre colchetes no início da mensagem de erro indica a causa da falha classificada automaticamente pelo sistema. A tabela a seguir descreve o significado de cada categoria e o tratamento recomendado.

Categoria de falha

Significado

Tratamento recomendado

ECIPendingTimeout

O pod ECI excedeu a duração máxima de Pending.

Verifique o estoque de tipos de instância ECI ou mude para outro tipo de instância ECI.

ResourceQuotaExceeded

A cota de recursos é insuficiente.

Entre em contato com o administrador para aumentar a cota ou reduza a concorrência do job.

InsufficientClusterResources

A CPU ou memória do cluster é insuficiente.

Aguarde a liberação de recursos ou escale horizontalmente o cluster.

Nota

O Watchdog apenas marca o job como falho. A decisão de tentar novamente o job posteriormente é controlada pela restartPolicy do job, consistente com o comportamento quando um job falha normalmente. Para mais informações sobre novas tentativas de aplicação, consulte a seção Configure novas tentativas de aplicação neste tópico.

Especifique um ambiente de execução para jobs Spark

A tabela a seguir descreve os parâmetros de configuração necessários ao utilizar a tecnologia de ambientes virtuais para empacotar um ambiente Python e submit jobs Spark.

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.pyspark.python

Não

N/A

Caminho do interpretador Python no seu dispositivo local.

Especifique a versão do Spark

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.version

Não

3.2

Versão do Spark. Valores válidos:

  • 2.4

  • 3.2

  • 3.3

  • 3.5

  • 4.0

Mecanismo de execução vetorizada de alto desempenho

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.native.enabled

Não

false

Define se o mecanismo de execução vetorizada de alto desempenho deve ser ativado para execute jobs. O mecanismo é integrado ao AnalyticDB for MySQL Spark e totalmente compatível com o Spark open source. Ative-o sem modificar seu código existente.

Aceleração de armazenamento de lake

Parâmetro

Obrigatório

Valor padrão

Descrição

spark.adb.lakecache.enabled

Não

false

Define se o LakeCache (aceleração de armazenamento de lake) deve ser ativado.

Parâmetros de configuração não suportados pelo AnalyticDB for MySQL

O AnalyticDB for MySQL Spark não suporta os seguintes parâmetros de configuração do Apache Spark. Esses parâmetros não têm efeito no AnalyticDB for MySQL Spark.

Useless options(these options will be ignored):
  --deploy-mode
  --master
  --packages, please use `--jars` instead
  --exclude-packages
  --proxy-user
  --repositories
  --keytab
  --principal
  --queue
  --total-executor-cores
  --driver-library-path
  --driver-class-path
  --supervise
  -S,--silent
  -i <filename>