我正在使用hadoop(通过spark),需要访问s3n内容,这是请求者付费的。通常,这是通过启用 httpclient.requester-pays-buckets-enabled = true
在 jets3t.properties
. 但是,我设置了这个,spark/hadoop却忽略了它。也许我把 jets3t.properties
在错误的地方( /usr/share/spark/conf/
). 如何让hadoop/spark/jets3t访问请求者支付桶?
更新:如果你在amazonec2之外,这是需要的。在ec2中,amazon不要求请求者付费。所以,一个粗略的解决方法是用完ec2。
2条答案
按热度按时间5ssjco0h1#
环境变量和配置文件不起作用,但一些手动代码起作用:
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "PUTTHEKEYHERE")
niwlg2el2#
spark系统由几个jvm(应用程序、主程序、工作程序、执行程序)组成,因此设置属性可能很棘手。你可以用
System.getProperty()
在执行文件操作之前,检查运行代码的jvm是否加载了正确的配置。你甚至可以用System.setProperty()
直接设置它,而不是计算配置文件。