你可以让我知道在spark-shell中设置aws访问密钥和aws密钥的最佳方法。我尝试使用
进行设置sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", MY_ACCESS_KEY)
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", MY_SECRET_KEY)
得到了
java.lang.IllegalArgumentException:必须将AWS Access Key ID和Secret Access Key指定为s3n URL的用户名或密码,或者通过设置fs.s3n.awsAccessKeyId或fs.s3n.awsSecretAccessKey属性(分别地)
我可以通过将其作为url
的一部分传递来使其工作s3n://MY_ACCESS_KEY:MY_SECRET_KEY@BUCKET_NAME/KEYNAME
用%2F替换我的密钥中的斜杠后,但想知道是否有替代方法可以在网址中嵌入我的访问密钥和密钥。
答案 0 :(得分:3)
您可以使用hadoopRDD
函数并直接使用所需属性指定JobConf
对象。
答案 1 :(得分:2)
除了霍尔顿的答案之外,这里还有一个具体的例子:
val jobConf = new JobConf(sparkContext.hadoopConfiguration)
jobConf.set("fs.s3n.awsAccessKeyId", MY_ACCESS_KEY)
jobConf.set("fs.s3n.awsSecretAccessKey", MY_SECRET_KEY)
val rdd = sparkContext.hadoopFile(jobConf, ...)