Execute tarefas do Spark com o DataprocFileOutputCommitter

A funcionalidade DataprocFileOutputCommitter é uma versão melhorada do FileOutputCommitter de código aberto. Permite escritas simultâneas por tarefas do Apache Spark num local de saída.

Limitações

A funcionalidade DataprocFileOutputCommitter suporta tarefas do Spark executadas em clusters do Dataproc Compute Engine criados com as seguintes versões de imagens:

  • Versões de imagens 2.1.10 e superiores

  • Versões de imagens 2.0.62 e superiores

Usar DataprocFileOutputCommitter

Para usar esta funcionalidade:

  1. Crie um cluster do Dataproc no Compute Engine com as versões de imagem 2.1.10 ou 2.0.62 ou superior.

  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 trabalho quando envia um trabalho do Spark para o cluster.

    • Exemplo da CLI do Google Cloud:
    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")