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. Por el contrario, en las operaciones de sobrescritura de inserción dinámica, los archivos escritos al intentar realizar una tarea solo aparecen en la ubicación de salida del trabajo cuando se confirma el trabajo. Esto se consigue exportando los metadatos de confirmación de nuevo al controlador de Spark en la llamada de confirmación de la tarea.
Habilitando 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 utilizar el sistema de archivos S3A, puede hacer lo siguiente:
-
Utilice el esquema de archivos
s3a://
al definir la tabla, la partición o el directorio. -
Establezca la configuración
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
en core-site.xml.
Deshabilitar el MagicCommitProtocol
-
Puedes
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
establecerlo en false codificándolo de forma rígida en unSparkConf
, pasándolo como--conf
parámetro en el shell ospark-submit
en lasspark-sql
herramientas de Spark, o en.conf/spark-defaults.conf
Para obtener más información, consulta la configuración de Sparken la documentación de Apache Spark. El siguiente ejemplo muestra cómo deshabilitarlo MagicCommitProtocol mientras se ejecuta un
spark-sql
comando.spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;"
-
Utilice la clasificación
spark-defaults
de configuración para establecer laspark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
propiedad en false. Para obtener más información, consulte Configuración de aplicaciones.
MagicCommitProtocol consideraciones
-
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. El controlador Spark no requiere memoria adicional
-
Para la inserción dinámica de particiones, en los controladores 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.memory
para los controladores de Spark y la propiedadspark.executor.memory
para los ejecutores de Spark. Como norma, una sola tarea de escribir 100 000 archivos normalmente requeriría 200 MB de memoria adicionales. Para obtener más información, consulte Application propertiesen la documentación de configuración de Apache Spark.