【发布时间】:2018-10-11 10:16:36
【问题描述】:
我在 Internet 上阅读了很多关于如何让 Spark 与 S3 一起工作的主题,但仍然没有任何工作正常。 我已经下载了:Spark 2.3.2 with hadoop 2.7 and above。
我只将一些库从 Hadoop 2.7.7(与 Spark/Hadoop 版本匹配)复制到 Spark jars 文件夹:
- hadoop-aws-2.7.7.jar
- hadoop-auth-2.7.7.jar
- aws-java-sdk-1.7.4.jar
我仍然不能使用 S3N 和 S3A 来让 spark 读取我的文件:
对于 S3A,我有这个例外:
sc.hadoopConfiguration.set("fs.s3a.access.key","myaccesskey")
sc.hadoopConfiguration.set("fs.s3a.secret.key","mysecretkey")
val file = sc.textFile("s3a://my.domain:8080/test_bucket/test_file.txt")
com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 403, AWS Service: Amazon S3, AWS Request ID: AE203E7293ZZA3ED, AWS Error Code: null, AWS Error Message: Forbidden
使用piece of Python 和更多代码,我可以列出我的存储桶、列出我的文件、下载文件、从我的计算机读取文件并获取文件 url。 这段代码给了我以下文件网址:
我应该如何安装/设置/下载以使 spark 能够从我的 S3 服务器读取和写入?
编辑 3:
使用debug tool in comment 这里是the result。
似乎问题在于签名不知道这意味着什么。
【问题讨论】:
-
如果您的权限被拒绝,那么您的类路径是正确的... AWS(或 minio)拒绝您的密钥...您可以 minio github 上有关 Spark 支持的问题
-
忘掉 S3n,它不再被维护并且表现不佳。专注于 s3a 并处理类路径。要调试下载完整的 hadoop 发行版,请将您的 s3a 密钥放入 core-site,然后在 github.com/steveloughran/cloudstore 中运行诊断入口点;它是我指向每个人的自我诊断代码
-
这是一种说“你的类路径仍然损坏”的方式;那是 hadoop-aws JAR 中的一个文件。对于 Hadoop 3+,您可以编辑
~/.hadooprc以将其拉入 `hadoop_add_to_classpath_tools hadoop-aws'
标签: scala apache-spark hadoop amazon-s3