使用Scala读取.aws / credentials文件,从spark中获取hadoop conf设置

时间:2016-11-10 15:37:28

标签: amazon-web-services hadoop apache-spark amazon-s3

如何只读取我在credentials目录下的.aws文件中找到的不同aws配置文件?只是想让我的应用程序读取访问密钥和秘密,如下面但不知道如何指向凭证文件。

object S3KeyStore extends Serializable {
  private val keyMap = Map(String, S3Key)

  def load(key: String)(implicit sc: SparkContext) = keyMap.get(key) match {
    case Some(k) =>
      val hc = sc.hadoopConfiguration
      hc.set("fs.s3a.awsAccessKeyId", k.access)
      hc.set("fs.s3a.awsSecretAccessKey", k.secret)
      true
    case _ => false
  }
}

1 个答案:

答案 0 :(得分:1)

  1. Spark峰会自动设置来自AWS env vars的凭据;请注意,他们可以标记你在spark-defaults / core-site中设置的任何内容。

  2. 如果您使用S3A,我认为它可能会使用这些凭据(它需要一个auth机制列表;我将看一下它是否会执行此操作)。

  3. 您可以在Hadoop / YARN中设置core-site.xml以从另一个目录中获取机密。我在测试中执行此操作via XInclude

  4. Hadoop 2.8+中的S3A还将处理EC2虚拟机中的IAM身份验证,并在加密的JCEKS文件中编码机密(可以在群集中共享,因此秘密永远不会在作业提交中以明文形式发送)。它还支持会话密钥,因此您可以在短时间内发布一些凭据。