Executar jobs do Spark com o DataprocFileOutputCommitter

O recurso DataprocFileOutputCommitter é uma versão aprimorada versão mais recente do FileOutputCommitter de código aberto. Ele permite gravações simultâneas por jobs do Apache Spark em um local de saída.

Limitações

O recurso DataprocFileOutputCommitter oferece suporte a jobs do Spark executados em clusters do Dataproc Compute Engine criados com as seguintes versões de imagem:

  • Versões de imagem 2.1 2.1.10 e mais recentes

  • Versões de imagem 2.0 2.0.62 e mais recentes

Usar DataprocFileOutputCommitter

Para usar este recurso, siga estas etapas:

  1. Criar um cluster do Dataproc no Compute Engine usando a versão de imagem 2.1.10, 2.0.62 ou mais recente.

  2. Defina spark.hadoop.mapreduce.outputcommitter.factory.class=org.apache.hadoop.mapreduce.lib.output.DataprocFileOutputCommitterFactory e spark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs=false como uma propriedade do job ao enviar um job do Spark ao cluster.

    • Exemplo da 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 ...
    
    • Exemplo 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")