使用Scala将数据从S3读入Spark数据帧

时间:2018-06-09 18:50:27

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

我正在尝试从" s3://fakePath/subFakePath/sub-sub-FakePath/*.gz"读取数据;进入我当地的火花。 我正在指定fs.s3a.access.key"和" fs.s3a.secret.key"在我的scala代码中使用

SqlContext.read()

我的classpath中也有hadoop-aws-2.7.1.jar。 我得到的错误是

  

java.util.ServiceConfigurationError:org.apache.hadoop.fs.FileSystem:   提供者org.apache.hadoop.fs.s3a.S3AFileSystem不可能   实例

我已经在StackOverflow上找到了关于这个问题的答案,但这似乎并没有解决我的问题。 如果有人能指出我所遗忘的那篇或者没有来到这里,我将非常感激。

1 个答案:

答案 0 :(得分:0)

如果您使用Amazon EMR服务,则不会遇到此问题,因为所有jar都会被适当地添加到路径中。

如果s3a,s3n,s3文件系统无法实例化,则是由于aws-sdk jar不在路径中。

这里几个小时的调查是如何对我有用的,

  

./ spark-shell --master yarn-client --jars   /usr/hdp/2.4.0.0-169/hadoop/hadoop-aws-2.7.1.2.4.0.0-169.jar,/usr/hdp/2.4.0.0-169/hadoop/hadoop-auth.jar,/usr /hdp/2.4.0.0-169/hadoop/aws-java-sdk-1.10.65.jar   --driver-memory 512m --executor-memory 512m

希望它有所帮助。