使用 DataprocFileOutputCommitter 執行 Spark 工作

DataprocFileOutputCommitter 功能是開放原始碼 FileOutputCommitter 的強化版本。這項功能可讓 Apache Spark 工作同時寫入輸出位置。

限制

DataprocFileOutputCommitter 功能支援在 Dataproc Compute Engine 叢集上執行的 Spark 工作,這些叢集是使用下列映像檔版本建立:

  • 2.1 映像檔版本 2.1.10 以上

  • 2.0 映像檔版本 2.0.62 以上

使用DataprocFileOutputCommitter

如要使用這項功能,請按照下列步驟操作:

  1. 使用映像檔版本 2.1.102.0.62 以上版本建立 Dataproc on Compute Engine 叢集

  2. spark.hadoop.mapreduce.outputcommitter.factory.class=org.apache.hadoop.mapreduce.lib.output.DataprocFileOutputCommitterFactoryspark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs=false 設為工作屬性,然後將 Spark 工作提交至叢集

    • 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 ...
    
    • 程式碼範例:
    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")