使用 DataprocFileOutputCommitter 运行 Spark 作业

DataprocFileOutputCommitter 功能是增强的 开源 FileOutputCommitter 的版本。它支持 Apache Spark 作业对输出位置进行并发写入。

限制

DataprocFileOutputCommitter 功能支持运行 Spark 作业 使用以下方式创建的 Dataproc Compute Engine 集群: 以下映像版本:

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