Spark与S3的集成



这是一个老问题,我已经解决了它按照答案在这篇文章:如何从本地安装的Hadoop 2.6访问S3/S3n ?

Kamil Sindi的答案对我有用,通过在spark-shell选项中添加包:

spark-shell --packages com.amazonaws:aws-java-sdk:1.11.967,org.apache.hadoop:hadoop-aws:3.2.0

当我输入下面的命令时,它工作了。

scala> sc.hadoopConfiguration.set("fs.s3.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
scala> sc.textFile("s3://test/testdata.txt").foreach(println)

但是当我像下面这样添加jar时:

spark-shell --jars /tmp/hadoop-aws-3.2.0.jar , /tmp/aws-java-sdk-1.11.967.jar

抛出如下错误:

java.lang.NoClassDefFoundError: com/amazonaws/AmazonServiceException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)

谁能告诉我为什么添加jar不能工作?我如何通过添加jar来解决这个问题?

解决。请使用bundle jar,它位于

$ HADOOP_HOME/分享/hadoop/工具/lib/

spark-shell——jar/data/workspace/files/hadoop-aws-3.2.0.jar,/data/workspace/files/aws-java-sdk-bundle-1.11.563.jar

最新更新