Versiones de lanzamiento - Amazon Athena

Versiones de lanzamiento

Amazon Athena para Apache Spark ofrece las siguientes versiones de lanzamiento:

Versión 3 del motor PySpark

La versión 3 de PySpark incluye Apache Spark, versión 3.2.1. Con esta versión, puede ejecutar el código de Spark en los cuadernos integrados en la consola de Athena.

Apache Spark versión 3.5

La versión 3.5 de Apache Spark se basa en Amazon EMR 7.12 e incluye la versión 3.5.6 de Apache Spark. Con esta versión, puede ejecutar el código de Spark desde los cuadernos de Estudio unificado de Amazon SageMaker AI o desde sus clientes compatibles con Spark preferidos. Esta versión añade características clave para ofrecer una experiencia mejorada para las cargas de trabajo interactivas:

  • Secure Spark Connect: añade Spark Connect como punto de conexión de AWS autenticado y autorizado.

  • Atribución de costos a nivel de sesión: los usuarios pueden realizar un seguimiento de los costos por sesión interactiva en los informes de costos y uso o del Explorador de costos de AWS. Para obtener más información, consulte Atribución de costos a nivel de sesión.

  • Capacidades de depuración avanzadas: añade compatibilidad con la interfaz de usuario activa de Spark y el servidor de historial de Spark para depurar cargas de trabajo tanto desde las API como desde los cuadernos. Para obtener más información, consulte Acceso a la interfaz de usuario de Spark.

  • Soporte de acceso sin filtros: accede a las tablas protegidas de AWS Glue Data Catalog en las que dispones de todos los permisos necesarios. Para obtener más información, consulte Uso de Lake Formation con los grupos de trabajo de Athena Spark.

Propiedades predeterminadas de Spark

La siguiente tabla enumera las propiedades de Spark y sus valores predeterminados que se aplican a las sesiones de Athena SparkConnect.

Key Valor predeterminado Descripción

spark.app.id

<Athena SessionId>

Esto no se puede modificar.

spark.app.name

default

spark.driver.cores

4

La cantidad de núcleos que utiliza el controlador. Esto no se puede modificar durante el lanzamiento inicial.

spark.driver.memory

10g

La cantidad de memoria que utiliza el controlador. Esto no se puede modificar durante el lanzamiento inicial.

spark.driver.memoryOverhead

6g

Cantidad de sobrecarga de memoria asignada a las cargas de trabajo de Python y otros procesos que se ejecutan en el controlador. Esto no se puede modificar durante el lanzamiento inicial.

spark.cortex.driver.disk

64g

El disco del controlador de Spark. Esto no se puede modificar durante el lanzamiento inicial.

spark.executor.cores

4

El número de núcleos que usa cada ejecutor. Esto no se puede modificar durante el lanzamiento inicial.

spark.executor.memory

10g

La cantidad de memoria que utiliza el controlador.

spark.executor.memoryOverhead

6g

Cantidad de sobrecarga de memoria asignada a las cargas de trabajo de Python y otros procesos que se ejecutan en el ejecutor. Esto no se puede modificar durante el lanzamiento inicial.

spark.cortex.executor.disk

64g

El disco ejecutor de Spark. Esto no se puede modificar durante el lanzamiento inicial.

spark.cortex.executor.architecture

AARCH_64

Arquitectura del ejecutor.

spark.driver.extraJavaOptions

-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false

Opciones de Java adicionales para el controlador de Spark. Esto no se puede modificar durante el lanzamiento inicial.

spark.executor.extraJavaOptions

-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false

Opciones de Java adicionales para el ejecutor de Spark. Esto no se puede modificar durante el lanzamiento inicial.

spark.executor.instances

1

El número de contenedores de ejecutores de Spark que se asignarán.

spark.dynamicAllocation.enabled

TRUE

Opción que activa la asignación dinámica de recursos. Esta opción escala o reduce verticalmente el número de ejecutores registrados en la aplicación, en función de la carga de trabajo.

spark.dynamicAllocation.minExecutors

0

El límite superior del número de ejecutores si activa la asignación dinámica.

spark.dynamicAllocation.maxExecutors

59

El límite superior del número de ejecutores si activa la asignación dinámica.

spark.dynamicAllocation.initialExecutors

1

El número inicial de ejecutores que se ejecutarán si activa la asignación dinámica.

spark.dynamicAllocation.executorIdleTimeout

60s

El tiempo que un ejecutor puede permanecer inactivo antes de que Spark lo elimine. Esto solo se aplica si activa la asignación dinámica.

spark.dynamicAllocation.shuffleTracking.enabled

TRUE

La función DRA habilitada requiere que el seguimiento aleatorio esté activado.

spark.dynamicAllocation.sustainedSchedulerBacklogTimeout

1s

El tiempo de espera define el tiempo que el programador de Spark debe observar una acumulación sostenida de tareas pendientes antes de enviar una solicitud al administrador de clústeres para que lance nuevos ejecutores.

spark.sql.catalogImplementation

hive

spark.hadoop.hive.metastore.client.factory.class

com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory

La clase de implementación del metaalmacén de AWS Glue.

spark.hadoop.hive.metastore.glue.catalogid

<accountId>

accountId de AWS Glue Catalog.

spark.sql.hive.metastore.sharedPrefixes

software.amazon.awssdk.services.dynamodb

La propiedad especifica una lista de prefijos de paquetes separados por comas para las clases que debe cargar el ClassLoader de la aplicación en lugar del ClassLoader aislado creado para el código del cliente de Hive Metastore.

spark.hadoop.fs.s3.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Define la implementación para que el cliente de S3 utilice S3A.

spark.hadoop.fs.s3a.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Define la implementación para el cliente de S3A (S3A).

spark.hadoop.fs.s3n.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Define la implementación para que el cliente de S3 nativo (S3N) utilice S3A.

spark.hadoop.fs.AbstractFileSystem.s3.impl

org.apache.hadoop.fs.s3a.S3A

spark.hadoop.fs.s3a.aws.credentials.provider

software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider

spark.hadoop.fs.s3.customAWSCredentialsProvider

com.amazonaws.auth.DefaultAWSCredentialsProviderChain

spark.hadoop.mapreduce.output.fs.optimized.committer.enabled

TRUE

Esta propiedad habilita un protocolo de confirmación optimizado para los trabajos de Spark al escribir datos en Amazon S3. Si se establece en true, ayuda a Spark a evitar costosas operaciones de cambio de nombre de archivos, lo que se traduce en escrituras atómicas más rápidas y fiables en comparación con el archivador predeterminado de Hadoop.

spark.hadoop.fs.s3a.endpoint.region

<REGION>

Esta configuración establece de forma explícita la región de AWS del bucket de Amazon S3 al que se accede a través del cliente S3A.

spark.hadoop.fs.s3.getObject.initialSocketTimeoutMilliseconds

2000

Especifica el tiempo de espera de la conexión del socket en milisegundos.

spark.hadoop.fs.s3a.committer.magic.enabled

TRUE

Esto habilita el S3A “Magic” Committer, un protocolo de confirmación específico pero de alto rendimiento que depende del soporte del administrador de clústeres subyacente para rutas especiales.

spark.hadoop.fs.s3a.committer.magic.track.commits.in.memory.enabled

TRUE

Únicamente relevante cuando el Magic Committer está activado, especifica si la lista de archivos archivados por una tarea debe guardarse en la memoria en lugar de grabarse en archivos de disco temporales.

spark.hadoop.fs.s3a.committer.name

magicv2

Esta configuración selecciona de forma explícita el algoritmo específico del S3A Output Committer que se va a utilizar (p. ej., directorio, particionado o mágico). Al especificar el nombre, usted elige la estrategia que administra los datos temporales, gestiona los errores de las tareas y realiza la confirmación atómica final con la ruta de Amazon S3 de destino.

spark.hadoop.fs.s3.s3AccessGrants.enabled

FALSE

La propiedad permite la compatibilidad con las Concesiones de acceso a Amazon S3 al acceder a los datos de Amazon S3 a través del cliente del sistema de archivos S3A/EMRFS.

spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM

FALSE

Cuando las Concesiones de acceso a Amazon S3 están habilitadas, esta propiedad controla si el cliente de Amazon S3 debe recurrir a las credenciales de IAM tradicionales si la búsqueda de concesiones de acceso falla o no proporciona permisos suficientes.

spark.pyspark.driver.python

/usr/bin/python3.11

Ruta de Python para el controlador.

spark.pyspark.python

/usr/bin/python3.11

Ruta de Python para el ejecutor.

spark.python.use.daemon

TRUE

Esta configuración controla si Spark utiliza un proceso daemon de trabajo de Python en cada ejecutor. Cuando está habilitado (true, es el valor predeterminado), el ejecutor mantiene al trabajador de Python activo entre tareas para evitar la sobrecarga de iniciar e inicializar repetidamente un nuevo intérprete de Python para cada tarea, lo que mejora significativamente el rendimiento de las aplicaciones de PySpark.

spark.sql.execution.arrow.pyspark.enabled

TRUE

Permite el uso de Apache Arrow para optimizar la transferencia de datos entre los procesos de JVM y Python en PySpark.

spark.sql.execution.arrow.pyspark.fallback.enabled

TRUE

Propiedad de configuración que controla el comportamiento de Spark cuando se produce un error durante la transferencia de datos entre JVM y Python mediante la optimización de Apache Arrow.

spark.sql.parquet.fs.optimized.committer.optimization-enabled

TRUE

Propiedad de configuración que controla si Spark utiliza un archivador de archivos optimizado al escribir archivos de Parquet en determinados sistemas de archivos, específicamente en sistemas de almacenamiento en la nube como Amazon S3.

spark.sql.parquet.output.committer.class

com.amazon.emr.committer.EmrOptimizedSparkSqlParquetOutputCommitter

Propiedad de configuración de Spark que especifica el nombre de clase completo del OutputCommitter de Hadoop que se utilizará al escribir archivos Parquet.

spark.resourceManager.cleanupExpiredHost

TRUE

Esta propiedad controla si el controlador limpia activamente los recursos de la aplicación de Spark asociados a los ejecutores que se ejecutaban en nodos que se eliminaron o vencieron.

spark.blacklist.decommissioning.enabled

TRUE

La propiedad permite que la lógica de Spark ponga automáticamente en una lista negra a los ejecutores que el administrador de clústeres está procediendo a su desmantelamiento (apagado controlado). Esto evita que el programador envíe nuevas tareas a los ejecutores que están a punto de salir, lo que mejora la estabilidad laboral durante la reducción vertical de los recursos.

spark.blacklist.decommissioning.timeout

1h

El tiempo máximo que Spark esperará a que una tarea se migre correctamente de un ejecutor de desmantelamiento antes de incluir el host en una lista negra.

spark.stage.attempt.ignoreOnDecommissionFetchFailure

TRUE

Indica a Spark que sea indulgente y que no falle ni un intento de fase completa si se produce un error de recuperación al leer datos aleatorios de un ejecutor de desmantelamiento. El error de recuperación se considera recuperable, y Spark volverá a buscar los datos desde una ubicación diferente (es posible que sea necesario volver a calcularlos), por lo que dará prioridad a la finalización del trabajo antes que a la gestión estricta de los errores durante los apagados controlados.

spark.decommissioning.timeout.threshold

20

Esta propiedad suele usarse internamente o en configuraciones específicas de administradores de clústeres para definir la duración máxima total que Spark espera que dure el proceso de desmantelamiento de un host. Si el tiempo real de desmantelamiento supera este umbral, Spark podría tomar medidas agresivas, como incluir el host en una lista negra o solicitar la terminación forzosa, para liberar el recurso.

spark.files.fetchFailure.unRegisterOutputOnHost

TRUE

Cuando una tarea no consigue recuperar datos de modo aleatorio o RDD de un host específico, si se establece este valor en true, Spark debe anular el registro de todos los bloques de salida asociados a la aplicación que está fallando en ese host. Esto evita que las tareas futuras intenten obtener datos de un host poco fiable, lo que obliga a Spark a volver a calcular los bloques necesarios en otros lugares y aumenta la solidez del trabajo ante problemas de red intermitentes.