2015-11-06 70 views
2

使用Spark 1.5,我使用spark-ec2可执行文件和--copy-aws-credentials标志启动了一个EC2集群。登录到主节点后,未设置$AWS_ACCESS_KEY_ID和。它们都设置在启动集群的机器上。尝试通过主节点上的spark-shell中的sc.textFile("s3n://...)获取文件会引发请求凭据的错误。spark-ec2 --copy-aws-credentials不工作

如何使用适当的AWS凭据启动集群?

回答

0

我遇到了这个完全相同的问题。

从查看spark-ec2安装脚本[1]我了解到,将密钥复制到core-site.xml文件中以用于hdfs安装。您可以检查~/ephemeral-hdfs/conf/core-site.xml~/persistent-hdfs//conf/core-site.xml。 这允许您将文件放在您配置的两个文件系统中的任何一个,而无需提供AWS凭证。从Spark,您可以访问hdfs中的文件(即hdfs:///yourdata)。

如果您想直接从Spark访问S3,有许多选项。

  1. 将相同的配置放入~/spark/conf/core-site.xml~/mapreduce/conf/core-site.xml。每次停止并启动群集时,都必须重做此操作,这很烦人。
  2. export AWS_ACCESS_KEY_ID=...export AWS_SECRET_ACCESS_KEY=...您提交星火作业(例如在提交你的工作在同一个脚本)
  3. 提供您的凭据与s3n URL(s3n://YourAccesKey:[email protected]/yourdata

[1] https://github.com/amplab/spark-ec2