我正在使用Hadoop(通过Spark),并且需要访问请求者支付的S3N内容。通常,这是通过在httpclient.requester-pays-buckets-enabled = true
中启用jets3t.properties
来完成的。然而,我设置了这个并且Spark / Hadoop忽略了它。也许我把jets3t.properties
放在错误的地方(/usr/share/spark/conf/
)。如何让Hadoop / Spark / JetS3t访问请求者支付存储桶?
更新:如果您位于Amazon EC2之外,则需要此功能。在EC2中,亚马逊不需要请求者付费。因此,一个粗略的解决方法是耗尽EC2。
答案 0 :(得分:0)
Spark系统由几个JVM(应用程序,主服务器,工作程序,执行程序)组成,因此设置属性可能很棘手。您可以在文件操作之前使用System.getProperty()
来检查运行代码的JVM是否加载了正确的配置。你甚至可以使用System.setProperty()
直接在那一点设置它,而不是找出配置文件。
答案 1 :(得分:0)
环境变量和配置文件不起作用,但有些手动代码执行了:sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "PUTTHEKEYHERE")