我正在编写一个 spark/scala 程序,它在 athena 上提交查询(使用 aws-java-sdk-athena:1.11.420
)并等待查询完成。查询完成后,我的 spark 程序使用 s3a
直接从 S3 存储桶中读取数据。协议(protocol)(查询的输出位置)使用 spark 的 sparkSession.read.csv()
功能。
为了读取 CSV 文件,我需要使用 org.apache.hadoop.hadoop-aws:1.8+
和 org.apache.hadoop.hadoop-client:1.8+
.这两个库都是使用 AWS 开发工具包版本 1.10.6
构建的。 .但是,AWS athena 没有该版本的任何开发工具包。他们拥有的最旧版本是1.11+
.
我该如何解决冲突?我需要使用最新版本的 AWS SDK 才能访问 athena,但是 hadoop-aws
把我推回旧版本?hadoop-aws
还有其他依赖版本吗?使用 1.11+
AWS 开发工具包?如果是这样,哪些版本适合我?如果没有,我还有什么其他选择?
最佳答案
我发现我可以使用 hadoop-aws:3.1+
附带aws-java-sdk-bundle:1.11+
.此 AWS 开发工具包捆绑了 Athena。
我虽然仍然需要使用 hadoop-commons:3.1+
运行 spark图书馆。我拥有的 spark 集群运行 2.8 版本的库。
由于我的 spark 集群运行 2.8,spark-submit 作业失败,而 jar ( java -jar myjar.jar
) 的正常执行工作正常。这是因为 Spark 正在用捆绑的版本替换我提供的 hadoop 库。
关于amazon-web-services - 从 s3a 读取文件以及 AWS Athena SDK (1.11+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52861125/