Todos los productos
Search
Centro de documentos

AnalyticDB:Parámetros de configuración de aplicaciones Spark

Última actualización: Sep 04, 2026

AnalyticDB for MySQL Los parámetros de configuración de Spark son similares a los de Apache Spark. Este tema describe los parámetros de configuración de AnalyticDB for MySQL que difieren de los de Apache Spark.

Notas de uso

Los parámetros de configuración de aplicaciones Spark se utilizan para configurar y ajustar el comportamiento y rendimiento de las aplicaciones Spark. El formato de estos parámetros varía según las herramientas de desarrollo de Spark que utilice.

Herramienta de desarrollo

Formato del parámetro de configuración

Ejemplo de configuración

SQL editor

set key=value;

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

Spark Jar editor

"key": "value"

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

Notebook editor

"key": "value"

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

spark-submit command line interface

key=value

spark.sql.hive.metastore.version=adb

Especifique los recursos de Driver y Executor

Parámetro

Obligatorio

Valor predeterminado

Descripción

Parámetro correspondiente en Apache Spark

spark.adb.acuPerApp

No

Ninguna

Número de ACU utilizadas por un solo trabajo de Spark. Valores válidos: [2, Recursos de cómputo máximos de un resource group de trabajos].

Después de configurar este parámetro, el sistema calcula y configura automáticamente las especificaciones del Spark Driver, las especificaciones del Spark Executor y el número de nodos del Spark Executor.

Haga clic para ver la estrategia de configuración de spark.adb.acuPerApp

  • Si configura tanto spark.adb.acuPerApp como todos los demás parámetros de recursos (incluidos spark.driver.resourceSpec, spark.executor.resourceSpec y spark.executor.instances), spark.adb.acuPerApp no tendrá efecto y los valores de los otros parámetros de recursos permanecerán sin cambios.

  • Si solo configura spark.adb.acuPerApp, este parámetro será válido y todos los demás parámetros de recursos se calcularán y configurarán automáticamente en función de spark.adb.acuPerApp.

  • En otras combinaciones de configuración, spark.adb.acuPerApp es válido y el sistema calcula automáticamente los parámetros de recursos que no se configuraron explícitamente (spark.driver.resourceSpec, spark.executor.resourceSpec y spark.executor.instances) basándose en este parámetro. Los valores de los parámetros configurados explícitamente permanecen sin cambios.

N/A

spark.driver.resourceSpec

Sí

medium

Especificaciones de recursos del driver de Spark. Cada tipo corresponde a especificaciones distintas. Para obtener más información, consulte la columna Tipo en la tabla Spark resource specifications de este tema.

Importante

Si envía aplicaciones Spark, puede usar parámetros de Apache Spark y configurar los parámetros según los valores de núcleos y memoria descritos en la tabla Spark resource specifications de este tema.

Ejemplo: CONF spark.driver.resourceSpec = c.small;. En este ejemplo, el driver de Spark proporciona 1 núcleo y 2 GB de memoria.

spark.driver.cores y spark.driver.memory

spark.executor.resourceSpec

Sí

medium

Especificaciones de recursos de cada executor de Spark. Cada tipo corresponde a especificaciones distintas. Para obtener más información, consulte la columna Tipo en la tabla Spark resource specifications de este tema.

Importante

Si envía aplicaciones Spark, puede usar parámetros de Apache Spark y configurar los parámetros según los valores de núcleos y memoria descritos en la tabla Spark resource specifications de este tema.

Ejemplo: CONF spark.executor.resourceSpec = c.small;. En este ejemplo, cada executor de Spark proporciona 1 núcleo y 2 GB de memoria.

spark.executor.cores y spark.executor.memory

spark.executor.instances

No

Recursos de cómputo máximos de un resource group de trabajos/5

Número de executors de Spark iniciados.

spark.executor.instances

spark.adb.driverDiskSize

No

Ninguna

Tamaño del almacenamiento de disco adicional montado en el driver de Spark para satisfacer requisitos de almacenamiento de disco grandes. De forma predeterminada, el almacenamiento de disco adicional se monta en el directorio /user_data_dir.

Unidad: GiB. Valores válidos: (0,100]. Ejemplo: spark.adb.driverDiskSize=50Gi. En este ejemplo, el almacenamiento de disco adicional montado en el driver de Spark se establece en 50 GiB.

N/A

spark.adb.executorDiskSize

No

Ninguna

Tamaño del almacenamiento de disco adicional montado en un executor de Spark para satisfacer los requisitos de operaciones shuffle. De forma predeterminada, el almacenamiento de disco adicional se monta en el directorio /shuffle_volume.

Unidad: GiB. Valores válidos: (0,100]. Ejemplo: spark.adb.executorDiskSize=50Gi. En este ejemplo, el almacenamiento de disco adicional montado en un executor de Spark se establece en 50 GiB.

N/A

Especificaciones de recursos de Spark

Importante

Puede utilizar recursos reservados o recursos elásticos para ejecutar trabajos de Spark. Si utiliza los recursos elásticos bajo demanda de un resource group de trabajos para ejecutar trabajos de Spark, el sistema calcula el número de unidades de cómputo de AnalyticDB (ACU) utilizadas basándose en las especificaciones de recursos de Spark y la proporción CPU-memoria mediante las siguientes fórmulas:

  • Proporción CPU-memoria 1:2: Número de ACU utilizadas = Número de núcleos de CPU × 0.8.

  • Proporción CPU-memoria 1:4: Número de ACU utilizadas = Número de núcleos de CPU × 1.

  • Proporción CPU-memoria 1:8: Número de ACU utilizadas = Número de núcleos de CPU × 1.5.

Para obtener información sobre los precios de los recursos elásticos bajo demanda, consulte Pricing for Data Lakehouse Edition.

Tabla 1. Especificaciones de recursos de Spark

Tipo

Especificaciones

ACU utilizadas

Núcleos de CPU

Memoria (GB)

Almacenamiento de 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

1Almacenamiento de disco: Se espera que el sistema ocupe aproximadamente el 1% del almacenamiento de disco. El almacenamiento de disco disponible real podría ser inferior a 20 GB.

Ejemplo

Asigne 32 Executors para un trabajo de Spark, donde cada Executor tenga una especificación de medium (2 núcleos, 8 GB) y cada Driver tenga una especificación de small (1 núcleo, 4 GB). En este caso, todo el trabajo puede asignar un total de 65 ACU de recursos de cómputo.

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

Especifique prioridades para trabajos de Spark

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.priority

No

NORMAL

Prioridad de un trabajo de Spark. Si los recursos son insuficientes para ejecutar todos los trabajos de Spark enviados, los trabajos en cola con mayor prioridad se ejecutan primero. Valores válidos:

  • HIGH: Prioridad alta.

  • NORMAL: Prioridad normal.

  • LOW: Prioridad baja.

  • LOWEST: Prioridad más baja.

Importante

Se recomienda establecer este parámetro en HIGH para trabajos de Spark de streaming (trabajos de flujo de larga duración).

Acceda a los metadatos

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.sql.catalogImplementation

No

  • Trabajos de Spark SQL: hive.

  • Trabajos que no son de Spark SQL: in-memory.

Tipo de metadatos a los que se accederá. Valores válidos:

  • hive: los metadatos en el Hive Metastore integrado de Apache Spark.

  • in-memory: los metadatos en el directorio temporal.

spark.sql.hive.metastore.version

No

  • Trabajos de Spark SQL: adb.

  • Trabajos que no son de Spark SQL: <hive_version>.

Versión del servicio metastore. Valores válidos:

  • adb: Se conecta a los metadatos de AnalyticDB for MySQL.

  • <hive_version>: la versión del Hive Metastore.

Nota
  • Para obtener información sobre las versiones de Hive compatibles con Apache Spark, consulte Configuración de Spark.

  • Para acceder a un Hive Metastore autogestionado, puede reemplazar la configuración predeterminada con la configuración estándar de Apache Spark. Para obtener más información, consulte Configuración de Spark.

Ejemplos

  • Configure el siguiente ajuste para acceder a los metadatos en AnalyticDB for MySQL:

    spark.sql.hive.metastore.version=adb;
  • Configure los siguientes ajustes para acceder a los metadatos en el Hive Metastore integrado de Apache Spark:

    spark.sql.catalogImplementation=hive;
    spark.sql.hive.metastore.version=2.1.3;
  • Configure el siguiente ajuste para acceder a los metadatos en el directorio temporal:

    spark.sql.catalogImplementation=in-memory;

Configure la Spark UI

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.app.log.rootPath

No

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

Directorio donde se almacenan los registros de trabajos de Spark de AnalyticDB for MySQL y los datos de salida del sistema operativo Linux.

De forma predeterminada, la carpeta llamada Spark application ID contiene el siguiente contenido:

  • El archivo llamado Spark application ID-000X que almacena los registros de eventos de Spark utilizados para la renderización de la Spark UI.

  • Las carpetas llamadas driver y números que almacenan los registros de los nodos correspondientes.

  • Las carpetas llamadas stdout y stderr que almacenan los datos de salida del sistema operativo Linux.

spark.adb.event.logUploadDuration

No

false

Especifica si se debe registrar la duración de la carga de un registro de eventos.

spark.adb.buffer.maxNumEvents

No

1000

Número máximo de eventos almacenados en caché por el driver.

spark.adb.payload.maxNumEvents

No

10000

Número máximo de eventos que se pueden cargar a Object Storage Service (OSS) a la vez.

spark.adb.event.pollingIntervalSecs

No

0.5

Intervalo entre dos cargas de eventos a OSS. Unidad: segundos. Por ejemplo, un valor de 0.5 indica que los eventos se cargan cada 0.5 segundos.

spark.adb.event.maxPollingIntervalSecs

No

60

Intervalo máximo de reintento cuando falla una carga de eventos a OSS. Unidad: segundos. El intervalo entre una carga fallida y un reintento de carga debe estar dentro del rango de los valores de spark.adb.event.pollingIntervalSecs a spark.adb.event.maxPollingIntervalSecs.

spark.adb.event.maxWaitOnEndSecs

No

10

Tiempo máximo de espera para cargar eventos a OSS. Unidad: segundos. El tiempo máximo de espera es el intervalo entre el inicio y la finalización de una carga. Si una carga no se completa dentro del tiempo máximo de espera, se reintenta la carga.

spark.adb.event.waitForPendingPayloadsSleepIntervalSecs

No

1

Tiempo de espera requerido para reintentar una carga que no se completó dentro del valor de spark.adb.event.maxWaitOnEndSecs. Unidad: segundos.

spark.adb.eventLog.rolling.maxFileSize

No

209715200

Tamaño máximo de archivo de los registros de eventos en OSS. Unidad: bytes. Los registros de eventos se almacenan en OSS en forma de varios archivos, como Eventlog.0 y Eventlog.1. Puede especificar el tamaño del archivo.

Otorgue permisos a usuarios RAM

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.roleArn

No

N/A

Nombre de recurso de Alibaba Cloud (ARN) del rol de Resource Access Management (RAM) que desea adjuntar al usuario RAM en la consola de RAM para otorgar al usuario RAM los permisos necesarios para enviar aplicaciones Spark. Para obtener más información, consulte RAM role overview. Si envía aplicaciones Spark como usuario RAM, debe especificar este parámetro. Si envía aplicaciones Spark con una cuenta de Alibaba Cloud, no necesita especificar este parámetro.

Nota

Si ya ha otorgado permisos a un usuario RAM en la consola de RAM, no necesita especificar este parámetro. Para obtener más información, consulte Account authorization.

Habilite los conectores de fuentes de datos integrados

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.connectors

No

N/A

Nombres de los conectores integrados de Spark de AnalyticDB for MySQL que desea habilitar. Separe varios nombres con comas (,). Valores válidos: oss, hudi, delta, adb, odps, external_hive, jindo y default.

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

No

false

Especifica si un archivo Snappy está en el formato Snappy estándar. De forma predeterminada, Hadoop reconoce los archivos Snappy editados en Hadoop. Si establece este parámetro en true, se utiliza la biblioteca Snappy estándar para la descompresión. Si establece este parámetro en false, se utiliza la biblioteca Snappy predeterminada de Hadoop para la descompresión.

Habilitar el acceso a VPC y a orígenes de datos

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.eni.enabled

No

false

Especifica si se habilita la interfaz de red elástica (ENI).

Si utiliza tablas externas para acceder a otros orígenes de datos externos, debe habilitar ENI. Valores válidos:

  • true: Habilitar

  • false: Deshabilitar

spark.adb.eni.vswitchId

No

N/A

ID del vSwitch asociado a una ENI.

Si se conecta a AnalyticDB for MySQL desde una instancia de Elastic Compute Service (ECS) a través de una nube privada virtual (VPC), debe especificar un ID de vSwitch para la VPC.

Nota

Si ha habilitado el acceso a VPC, debe establecer el parámetro spark.adb.eni.enabled en true.

spark.adb.eni.securityGroupId

No

N/A

ID del security group asociado a una ENI.

Si se conecta a AnalyticDB for MySQL desde una instancia de ECS a través de una VPC, debe especificar un ID de security group.

Nota

Si ha habilitado el acceso a VPC, debe establecer el parámetro spark.adb.eni.enabled en true.

spark.adb.eni.extraHosts

No

N/A

Asignaciones entre direcciones IP y nombres de host. Este parámetro permite que Spark resuelva los nombres de host de los orígenes de datos. Si desea acceder a un origen de datos Hive autogestionado, debe especificar este parámetro.

Nota
  • Separe las direcciones IP y los nombres de host con espacios. Separe varios grupos de direcciones IP y nombres de host con comas (,). Ejemplo: ip0 master0,ip1 master1.

  • Si ha habilitado el acceso a orígenes de datos, debe establecer el parámetro spark.adb.eni.enabled en true.

spark.adb.eni.adbHostAlias.enabled

No

false

Especifica si se escribe automáticamente la información de resolución de nombres de dominio que requiere AnalyticDB for MySQL en una tabla de asignación de nombres de dominio y direcciones IP. Valores válidos:

  • true: Habilitar.

  • false: Deshabilitar.

Si utiliza una ENI para leer o escribir datos en EMR Hive, debe establecer este parámetro en true.

Configurar reintentos de aplicación

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.maxAttempts

No

1

Número máximo de intentos permitidos para ejecutar una aplicación. El valor predeterminado es 1, lo que indica que no se permiten reintentos.

Si establece este parámetro en 3 para una aplicación de Spark, el sistema intenta ejecutar la aplicación hasta tres veces dentro de una ventana deslizante.

spark.adb.attemptFailuresValidityInterval

No

Integer.MAX

Duración de la ventana deslizante durante la cual el sistema intenta volver a ejecutar una aplicación. Unidad: segundos.

Por ejemplo, si establece este parámetro en 6000 para una aplicación de Spark, el sistema cuenta el número de intentos realizados en los últimos 6,000 segundos tras una ejecución con errores. Si el número de intentos es menor que el valor del parámetro maxAttempts, el sistema reintenta la ejecución de la aplicación.

Terminación automática de trabajos por tiempo de espera de programación (Scheduling Watchdog)

Cuando los pods de Executor de un trabajo permanecen en estado Pending durante un periodo prolongado debido a recursos subyacentes insuficientes (como agotamiento de inventario de ECI, exceso de cuota de recursos o afinidad de nodo insatisfecha), el trabajo sigue en espera, lo que desperdicia recursos del Driver y bloquea programaciones posteriores. Al habilitar esta función, cuando tanto la proporción de Executors no programables como el tiempo de espera alcanzan los umbrales especificados, el sistema marca automáticamente el trabajo como fallido y libera recursos para lograr un comportamiento de fallo rápido.

Escenarios

Esta función es adecuada para escenarios en los que ejecuta una gran cantidad de trabajos de Spark en un clúster compartido y desea que los trabajos fallen rápidamente en lugar de esperar indefinidamente cuando los recursos son insuficientes. Los escenarios típicos incluyen:

  • Recursos de ECI insuficientes: Cuando utiliza Elastic Container Instance (ECI) para ejecutar Executors, la falta de inventario de los tipos de instancia subyacentes provoca que los pods permanezcan en estado Pending durante mucho tiempo.

  • Exceso de cuota de recursos: La cuota de CPU o memoria del namespace o resource group se agota y no se pueden programar nuevos Executors.

  • Reintentos rápidos para trabajos por lotes: Desea que los trabajos fallen rápidamente cuando los recursos no están disponibles y permitir que un sistema de programación de capa superior (como Airflow) decida la estrategia de reintento.

Método de configuración

Al enviar un trabajo de Spark, configure los siguientes parámetros para habilitar y ajustar el comportamiento del Watchdog.

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.terminateOnPending.enabled

Obligatorio cuando la función está habilitada

false

Especifica si se habilita la terminación automática del trabajo por tiempo de espera de programación. Valores válidos:

  • true: habilita la función.

  • false (predeterminado): deshabilita la función.

Esta función está deshabilitada de forma predeterminada. Esta función y los demás parámetros solo surten efecto después de establecer este parámetro en true.

spark.adb.terminateOnPending.timeoutSec

No

610

Tiempo de tolerancia durante el cual un pod de Executor permanece en estado Pending. Unidad: segundos. El temporizador inicia cuando se detecta por primera vez que un pod de Executor no es programable. Cuando el tiempo de espera supera este valor y también se cumple la condición spark.adb.terminateOnPending.executorRatio, el trabajo se termina.

Valores recomendados: 610 a 900.

spark.adb.terminateOnPending.executorRatio

No

0.5

Umbral de la proporción de Executors no programables que activa la terminación. Rango válido: (0, 1.0]. La proporción se calcula como el número de Executors no programables dividido por el número total esperado de Executors. Cuando la proporción alcanza este valor y el tiempo en Pending supera spark.adb.terminateOnPending.timeoutSec, el trabajo se termina.

Un valor menor hace que la activación sea más sensible, y un valor mayor la hace más permisiva:

  • 0.3: activa la terminación cuando el 30% de los Executors no son programables. Adecuado para trabajos sensibles a la latencia.

  • 0.5 (predeterminado): activa la terminación cuando la mitad de los Executors no son programables.

  • 0.8 a 1.0: activa la terminación solo cuando la mayoría o todos los Executors no son programables. Adecuado para entornos con recursos que fluctúan dinámicamente.

El número total esperado de Executors se determina según la siguiente prioridad:

  1. spark.executor.instances (asignación estática).

  2. spark.dynamicAllocation.initialExecutors (valor inicial para asignación dinámica).

  3. spark.dynamicAllocation.maxExecutors (valor máximo para asignación dinámica).

  4. Si ninguno de los parámetros anteriores está configurado, se utiliza el número actual de pods no programables.

Importante

La terminación se activa solo cuando se cumplen tanto la condición spark.adb.terminateOnPending.executorRatio como spark.adb.terminateOnPending.timeoutSec. La terminación no se activa si solo se excede el tiempo de espera pero no se alcanza la proporción, o si solo se alcanza la proporción pero el tiempo de espera es insuficiente.

Ejemplo de configuración: habilite la terminación automática de trabajos por tiempo de espera de programación y termine el trabajo cuando la mitad de los Executors permanezcan sin programarse durante más de 300 segundos.

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

Comportamiento del trabajo tras la terminación

Una vez que se activa la terminación, el trabajo se comporta de la siguiente manera:

  • Estado del trabajo: SparkApplication entra primero en FailingState y luego cambia a FailedState.

  • Mensaje de error: status.appState.errorMessage contiene información estructurada de diagnóstico de fallos.

  • Pod de Driver: El pod de Driver se elimina proactivamente para liberar recursos.

El siguiente ejemplo muestra un mensaje de error:

[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

El contenido entre corchetes al inicio del mensaje de error indica la causa del fallo clasificada automáticamente por el sistema. La siguiente tabla describe el significado de cada categoría y el manejo recomendado.

Categoría de fallo

Significado

Manejo recomendado

ECIPendingTimeout

El pod de ECI supera la duración máxima en Pending.

Compruebe el inventario de tipos de instancia de ECI o cambie a otro tipo de instancia de ECI.

ResourceQuotaExceeded

La cuota de recursos es insuficiente.

Contacte al administrador para aumentar la cuota o reduzca la concurrencia del trabajo.

InsufficientClusterResources

La CPU o memoria del clúster es insuficiente.

Espere a que se liberen recursos o escale horizontalmente el clúster.

Nota

El Watchdog solo marca el trabajo como fallido. Si el trabajo se reintenta posteriormente depende de la restartPolicy del trabajo, lo cual es consistente con el comportamiento cuando un trabajo falla normalmente. Para obtener más información sobre los reintentos de aplicación, consulte la sección Configure application retries en este tema.

Especificar un entorno de ejecución para trabajos de Spark

La siguiente tabla describe los parámetros de configuración necesarios cuando utiliza la tecnología de entornos virtuales para empaquetar un entorno de Python y enviar trabajos de Spark.

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.pyspark.python

No

N/A

Ruta del intérprete de Python en su dispositivo local.

Especificar la versión de Spark

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.version

No

3.2

Versión de Spark. Valores válidos:

  • 2.4

  • 3.2

  • 3.3

  • 3.5

  • 4.0

Motor de ejecución vectorizada de alto rendimiento

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.native.enabled

No

false

Especifica si se habilita el motor de ejecución vectorizada de alto rendimiento para ejecutar trabajos. El motor está integrado en AnalyticDB for MySQL Spark y es totalmente compatible con Spark de código abierto. Puede habilitarlo sin modificar su código existente.

Aceleración de almacenamiento de lago

Parámetro

Obligatorio

Valor predeterminado

Descripción

spark.adb.lakecache.enabled

No

false

Especifica si se habilita LakeCache (lake storage acceleration).

Parámetros de configuración no compatibles con AnalyticDB for MySQL

AnalyticDB for MySQL Spark no admite los siguientes parámetros de configuración de Apache Spark. Estos parámetros no surten efecto en 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>