使用 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 作业时,将 spark.hadoop.mapreduce.outputcommitter.factory.class=org.apache.hadoop.mapreduce.lib.output.DataprocFileOutputCommitterFactoryspark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs=false 设置为作业属性。

    • 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")