Exécuter des jobs Spark avec DataprocFileOutputCommitter

La fonctionnalité DataprocFileOutputCommitter est une version améliorée de l'Open Source FileOutputCommitter. Il permet d'effectuer des écritures simultanées par des tâches Apache Spark sur un emplacement de sortie.

Limites

La fonctionnalité DataprocFileOutputCommitter est compatible avec les tâches Spark exécutées sur des clusters Dataproc Compute Engine créés avec les versions d'image suivantes:

  • Versions d'image 2.1 2.1.10 et ultérieures

  • Versions d'image 2.0 2.0.62 et ultérieures

Utiliser "DataprocFileOutputCommitter"

Pour utiliser cette fonction :

  1. Créez un cluster Dataproc sur Compute Engine à l'aide des versions d'image 2.1.10, 2.0.62 ou ultérieures.

  2. Définissez spark.hadoop.mapreduce.outputcommitter.factory.class=org.apache.hadoop.mapreduce.lib.output.DataprocFileOutputCommitterFactory et spark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs=false en tant que propriétés de tâche lorsque vous envoyez une tâche Spark au cluster.

    • Exemple 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 ...
    
    • Exemple de code:
    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")