Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
CHISPA EMR MagicCommitProtocol
A partir de la versión 6.15.0 de EMR, MagicCommitProtocol se convierte en la opción predeterminada FileCommitProtocol para Spark cuando se utiliza el sistema de archivos S3A.
MagicCommitProtocol
MagicCommitProtocol Se trata de una implementación alternativa a la FileCommitProtocol
MagicCommitProtocol Es la FileCommitProtocol implementación predeterminada que usa Spark cuando se ejecuta en Amazon Elastic Map Reduce (EMR) cuando se utiliza el sistema de archivos S3A. Utiliza MagicCommitProtocol internamente el MagicV2Committer para realizar las escrituras de archivos en Amazon S3.
En el caso de las operaciones de inserción estática, graba MagicCommitProtocol los archivos en la ubicación de salida del trabajo durante la fase de confirmación de la tarea. En cambio, en operaciones de inserción dinámica con sobrescritura, los archivos generados por los intentos de tarea solo aparecen en la ubicación de salida cuando el trabajo se confirma. Esto se logra mediante la exportación de metadatos de confirmación hacia el controlador de Spark durante la llamada de confirmación de la tarea.
Habilitación de MagicCommitProtocol
MagicCommitProtocol Está habilitado de forma predeterminada para Spark que se ejecuta en Amazon Elastic Map Reduce (EMR) cuando se utiliza el sistema de archivos S3A.
Para usar el sistema de archivos S3A, puede hacer lo siguiente:
-
Especificar el esquema del archivo como
s3a://al definir la tabla, partición o directorio. -
Establecer la propiedad
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystemen el archivo core-site.xml.
Deshabilitar el MagicCommitProtocol
-
Puede establecer la propiedad
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocolen falso codificándola de forma rígida en unSparkConf, pasándola como un parámetro--confen el intérprete de comandos de Spark o las herramientasspark-submityspark-sql, o enconf/spark-defaults.conf. Para obtener más información, consulte Spark configurationen la documentación de Apache Spark. En el siguiente ejemplo, se muestra cómo deshabilitarla MagicCommitProtocol mientras se ejecuta un
spark-sqlcomando.spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;" -
Utilice la clasificación de configuración
spark-defaultspara establecer la propiedadspark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocolen falso. Para obtener más información, consulte Configuración de aplicaciones.
Consideraciones sobre MagicCommitProtocol
-
En el caso de la inserción de particiones estáticas, en los ejecutores de Spark, se MagicCommitProtocol consume una pequeña cantidad de memoria por cada archivo escrito por un intento de tarea hasta que la tarea se confirma o se anula. En la mayoría de los trabajos, la cantidad de memoria consumida es insignificante. No requiere memoria adicional en el controlador de Spark.
-
En el caso de la inserción dinámica de particiones, en los controladores de Spark, se MagicCommitProtocol necesita memoria para almacenar la información de los metadatos de cada archivo confirmado hasta que el trabajo se confirme o se cancele. En la mayoría de los trabajos, la configuración de memoria predeterminada del controlador de Spark es insignificante.
En los trabajos que tienen tareas de ejecución prolongada y que escriben un gran número de archivos, la memoria que consume el protocolo de confirmación puede ser apreciable y requerir algunos ajustes de la memoria asignada a Spark, especialmente a los ejecutores de Spark. Puede ajustar la memoria mediante la propiedad
spark.driver.memorypara los controladores de Spark y la propiedadspark.executor.memorypara los ejecutores de Spark. Como pauta general, una sola tarea que escribe 100 000 archivos, normalmente requerirá 200 MB de memoria adicionales. Para obtener más información, consulte Application propertiesen la documentación de configuración de Apache Spark.