我试着使用神奇的输出提交器,但是无论我做什么,我都得到了默认的输出提交器.
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文档。我做错了什么?这是我的相关配置(使用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")
我没有任何其他相关的配置。代码或配置文件(Hadoop或Spark)中没有,也许我应该这样做?我正在写入的路径以s3://开头。使用Hadoop 3.2.1、Spark 3.0.0和EMR 6.1.1
1条答案
按热度按时间inn6fuwd1#
所以经过大量的阅读+ stevel评论,我找到了我需要的东西。我正在使用优化的输出提交器,它是内置的EMR,默认情况下使用。我一开始没有使用它的原因是AWS优化的提交器只有在可以的时候才被激活。在EMR 6.4.0之前,它只在一些情况下工作,但从6.4开始。0它工作在每一个写类型txt csv parquet和与rdd数据报和数据集。所以我只需要更新到EMR 6. 4. 0。
执行时间缩短了50- 60%。
最佳化的认可器requeirments。