Executar jobs do Spark com o DataprocFileOutputCommitter

O recurso DataprocFileOutputCommitter é uma versão aprimorada 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:

  • 2.1 versões de imagem 2.1.10 e mais recentes

  • Versões 2.0 da imagem 2.0.62 e mais recentes

Usar DataprocFileOutputCommitter

Para usar este recurso, siga estas etapas:

  1. Crie um cluster do Dataproc no Compute Engine usando as versões de imagem 2.1.10 ou 2.0.62 ou mais recentes.

  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 para o 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")