Ejecutar tareas de Spark con DataprocFileOutputCommitter

La función DataprocFileOutputCommitter es una versión mejorada de FileOutputCommitter de código abierto. Permite que las tareas de Apache Spark escriban simultáneamente en una ubicación de salida.

Limitaciones

La función DataprocFileOutputCommitter admite trabajos de Spark que se ejecutan en clústeres de Dataproc Compute Engine creados con las siguientes versiones de imagen:

  • Versiones de imagen 2.1.10 y posteriores

  • Versiones de imagen 2.0.62 y posteriores

Usar DataprocFileOutputCommitter

Para usar esta función:

  1. Crea un clúster de Dataproc en Compute Engine con las versiones de imagen 2.1.10 o 2.0.62, o una posterior.

  2. Define spark.hadoop.mapreduce.outputcommitter.factory.class=org.apache.hadoop.mapreduce.lib.output.DataprocFileOutputCommitterFactory y spark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs=false como propiedades de la tarea cuando envíes una tarea de Spark al clúster.

    • Ejemplo de Google Cloud CLI:
    gcloud dataproc jobs submit spark \
        --properties=spark.hadoop.mapreduce.outputcommitter.factory.class=org.apache.hadoop.mapreduce.lib.output.DataprocFileOutputCommitterFactory,spark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs=false \
        --region=REGION \
        other args ...
    
    • Ejemplo de código:
    sc.hadoopConfiguration.set("spark.hadoop.mapreduce.outputcommitter.factory.class","org.apache.hadoop.mapreduce.lib.output.DataprocFileOutputCommitterFactory")
    sc.hadoopConfiguration.set("spark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs","false")