我正在编写一个spark/scala程序,它提交一个关于athena的查询(使用 aws-java-sdk-athena:1.11.420
)并等待查询完成。一旦查询完成,我的spark程序将使用 s3a
使用spark的协议(查询的输出位置) sparkSession.read.csv()
功能。
为了读取csv文件,我需要使用 org.apache.hadoop.hadoop-aws:1.8+
以及 org.apache.hadoop.hadoop-client:1.8+
. 这两个库都是使用awssdk版本构建的 1.10.6
. 然而,aws雅典娜没有任何sdk与该版本。最古老的版本是 1.11+
.
如何解决冲突?我需要使用最新版本的aws sdk来访问雅典娜,但是 hadoop-aws
把我推回到旧版本?
是否有其他的依赖版本 hadoop-aws
使用 1.11+
aws SDK?如果是的话,有什么版本适合我?如果没有,我还有什么选择?
1条答案
按热度按时间svdrlsy41#
我发现我可以用
hadoop-aws:3.1+
随附的aws-java-sdk-bundle:1.11+
. 这个aws-sdk包附带了athena包。我虽然还需要和斯帕克一起跑
hadoop-commons:3.1+
图书馆。我的spark cluster运行的是2.8版本的库。由于我的spark cluster运行2.8,spark submit作业失败,而jar的正常执行(
java -jar myjar.jar
)工作正常。这是因为spark正在用它捆绑的版本替换我提供的hadoop库。