从s3a和AWS Athena SDK(1.11+)中读取文件

时间:2018-10-17 18:08:30

标签: amazon-web-services apache-spark hadoop amazon-s3 amazon-athena

我正在编写一个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开发工具包?如果是这样,什么版本对我有用?如果没有,我还有什么其他选择?

1 个答案:

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