如何在spark-shell中设置aws访问密钥和aws密钥

时间:2015-09-08 22:06:55

标签: scala amazon-s3 apache-spark

你可以让我知道在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替换我的密钥中的斜杠后,但想知道是否有替代方法可以在网址中嵌入我的访问密钥和密钥。

2 个答案:

答案 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, ...)