Apache spark 将“hadoop云”添加到Spark';s类路径

Apache spark 将“hadoop云”添加到Spark';s类路径,apache-spark,hadoop,amazon-s3,Apache Spark,Hadoop,Amazon S3,由于最近宣布S3在读写方面具有很强的一致性,我想尝试新的S3A提交程序,比如magic one 根据,我们需要添加两个类路径:BindingParquetOutputCommitter和PathOutputCommitProtocoladde in 官方文档建议使用基于hadoop3.2概要文件构建的Spark。有没有办法在不重新编译Spark的情况下添加这两个类?(由于某些技术原因,我无法使用已构建的Spark) 我正在使用Spark 3.0.1 我已经检查过了,但不幸的是,OP切换到了由EM

由于最近宣布S3在读写方面具有很强的一致性,我想尝试新的S3A提交程序,比如magic one

根据,我们需要添加两个类路径:
BindingParquetOutputCommitter
PathOutputCommitProtocol
adde in

官方文档建议使用基于hadoop3.2概要文件构建的Spark。有没有办法在不重新编译Spark的情况下添加这两个类?(由于某些技术原因,我无法使用已构建的Spark)

我正在使用Spark 3.0.1


我已经检查过了,但不幸的是,OP切换到了由EMR提供的开源S3A提交程序。

您需要一个使用-Phadoop云模块构建的spark版本。它将新类添加到spark-hadoop-cloud.jar中,并添加相关的依赖项,对于S3A,这些依赖项是

hadoop-aws-${the-exact-version-of-hadoop-jars-you-have}.jar
aws-sdk-something-${the-exact-version-that-hadoop-jar-was-built-with}.jar
因此,您可以查看您使用的spark分支,并仅对该模块进行maven构建

mvn -pl hadoop-cloud -Phadoop-cloud -Dhadoop.version=$hadoop-version install -DskipTests
你会得到一个新的spark hadoop云JAR,你可以用它来处理新的东西

  • s3a提交者只提供了hadoop-3.1
  • 我们(我)一直在忙着用jobIDs和“临时提交人”来应对一些比赛条件
  • 而且,考虑到S3是一致的,我推荐magic committer
您可以在spark standalone中测试这些内容,只需做一些简单的工作来编写数据,并验证_SUCCESS文件是否包含一些作业的JSON摘要

无论您使用哪种提交者,请确保您的bucket设置为在几天后删除未完成的上传。无论如何,你应该在任何地方都这样做


HTH

非常感谢您的回答和您在提交者方面所做的工作。我终于明白了你写的所有文档,我不会删除这个问题,因为我认为这是目前最清楚的答案之一。请参阅:。