【发布时间】:2019-09-09 09:15:38
【问题描述】:
我正在编写一个程序来将数据上传到某个 s3a:// 链接。程序通过mvn install编译。在本地运行程序(如使用java -jar jarfile.jar)没有返回错误。但是,当我使用 spark-submit(如使用spark-submit jarfile.jar)时,它返回了这样的错误:
线程“主”java.lang.NoSuchMethodError 中的异常: org.apache.hadoop.conf.Configuration.reloadExistingConfigurations()V 在 org.apache.hadoop.fs.s3a.S3AFileSystem.addDeprecatedKeys(S3AFileSystem.java:181) 在 org.apache.hadoop.fs.s3a.S3AFileSystem.(S3AFileSystem.java:185) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(Class.java:348) ...
追踪到我的这部分源代码的错误日志:
sparkDataset
.write()
.format("parquet")
.mode(SaveMode.Overwrite)
.save("some s3a:// link");
其中sparkDataset 是org.apache.spark.sql.Dataset 的一个实例。
尝试How to access s3a:// files from Apache Spark? 不成功并返回另一个错误:
线程“主”java.lang.NoClassDefFoundError 中的异常: org/apache/hadoop/fs/GlobalStorageStatistics$StorageStatisticsProvider
java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.reloadExistingConfigurations()V 的问题也不太可能,因为我可以在本地运行,兼容性不是问题。
另外,这些是我使用的相关库的版本:
- aws-java-sdk-bundle:1.11.199
- hadoop-aws:3.0.0
我期待通过 s3a:// 链接写入的文件。我认为依赖不是问题,因为我可以在本地运行。我只在使用 spark-submit 运行这个程序时遇到这个问题。有人对如何解决这个问题有任何想法吗?
编辑:另外,我检查了spark提交的spark版本据说是为hadoop 2.7及更高版本构建的。我严格使用hadoop 3.0.0。这可能是为什么我的程序中发生此类错误的线索吗?
【问题讨论】:
标签: java apache-spark hadoop amazon-s3