从s3a读取文件以及aws athena sdk(1.11+)

7jmck4yq  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(406)

我正在编写一个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?如果是的话,有什么版本适合我?如果没有,我还有什么选择?

svdrlsy4

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库。

相关问题