簡體   English   中英

無法讓 Spark 將神奇的 output committer 用於帶有 EMR 的 s3

[英]Can't get Spark to use the magic output committer for s3 with EMR

我正在嘗試使用神奇的 output 提交者,但無論我做什么,我都會得到默認的 output 提交者。

INFO FileOutputCommitter: File Output Committer Algorithm version is 10
22/03/08 01:13:06 ERROR Application: Only 1 or 2 algorithm version is supported

這就是我根據Hadoop 文檔知道我正在使用它的方式。 我究竟做錯了什么? 這是我的相關 conf(使用SparkConf() ),我嘗試了很多其他的。

  .set("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
  .set("spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version", "10")
  .set("spark.hadoop.fs.s3a.committer.magic.enabled", "true")
  .set("spark.hadoop.mapreduce.outputcommitter.factory.scheme.s3a", "org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory")
  .set("fs.s3a.committer.name", "magic")
  .set("spark.sql.sources.commitProtocolClass", "org.apache.spark.internal.io.cloud.PathOutputCommitProtocol")
  .set("spark.sql.parquet.output.committer.class", "org.apache.spark.internal.io.cloud.BindingParquetOutputCommitter")

我沒有與此相關的任何其他配置。 不在代碼或 conf 文件(Hadoop 或 Spark)中,也許我應該? 我寫的路徑以 s3:// 開頭。 使用 Hadoop 3.2.1、Spark 3.0.0 和 EMR 6.1.1

所以經過大量閱讀+史蒂夫評論,我找到了我需要的東西。 我正在使用優化的 output 提交程序,它是內置 EMR 並默認使用。 起初我沒有使用它的原因是 AWS 優化的提交器只有在它可以的時候才會被激活。 在 EMR 6.4.0 之前,它只適用於某些條件,但從 6.4.0 開始,它適用於每種寫入類型 txt csv parquet 以及 rdd 數據報和數據集。 所以我只需要更新到 EMR 6.4.0。

執行時間縮短了 50-60%。

優化的提交者要求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM