我正在编写一个spark / scala程序,该程序在athena上提交查询(使用aws-java-sdk-athena:1.11.420
),并等待查询完成。查询完成后,我的spark程序会使用s3a
函数和sparkSession.read.csv()
协议(查询的输出位置)直接从S3存储桶中读取数据。
为了读取CSV文件,我需要使用org.apache.hadoop.hadoop-aws:1.8+
和org.apache.hadoop.hadoop-client:1.8+
。这两个库都是使用AWS开发工具包版本1.10.6
构建的。但是,AWS athena没有该版本的任何SDK。他们拥有的最旧版本是1.11+
。
我该如何解决冲突?我需要使用最新版本的AWS开发工具包才能访问athena,但是hadoop-aws
将我推回了较早的版本?
是否还有其他hadoop-aws
依赖版本使用1.11+
AWS开发工具包?如果是这样,什么版本对我有用?如果没有,我还有什么其他选择?
答案 0 :(得分:0)
我发现我可以使用hadoop-aws:3.1+
随附的aws-java-sdk-bundle:1.11+
。该AWS开发工具包捆绑包随附了Athena。
尽管我仍然需要使用hadoop-commons:3.1+
库运行spark。我拥有的Spark集群运行2.8版本库。
由于我的Spark集群运行2.8,Spark提交作业失败,而jar(java -jar myjar.jar
)的正常执行正常。这是因为Spark正在用捆绑的版本替换我提供的hadoop库。