Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 从spark读取带有Scala for hadoop conf设置的.aws/credentials文件_Amazon Web Services_Hadoop_Apache Spark_Amazon S3 - Fatal编程技术网

Amazon web services 从spark读取带有Scala for hadoop conf设置的.aws/credentials文件

Amazon web services 从spark读取带有Scala for hadoop conf设置的.aws/credentials文件,amazon-web-services,hadoop,apache-spark,amazon-s3,Amazon Web Services,Hadoop,Apache Spark,Amazon S3,我如何读取我在.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(

我如何读取我在
.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
  }
}
  • Spark summit将自动设置来自AWS环境变量的凭据;请注意,它们可以标记您在spark defaults/core站点中设置的任何内容

  • 如果您使用S3A,我认为它可能会使用这些凭据(它需要一个身份验证机制列表;我将查看它是否使用了这个机制)

  • 您可以在Hadoop/Thread中设置core-site.xml以从另一个目录中获取机密。我在测试中这样做

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