使用Spark 1.5,我使用spark-ec2
可执行文件和--copy-aws-credentials
标志启动了一个EC2集群。登录到主节点后,未设置$AWS_ACCESS_KEY_ID
和。它们都设置在启动集群的机器上。尝试通过主节点上的spark-shell
中的sc.textFile("s3n://...)
获取文件会引发请求凭据的错误。spark-ec2 --copy-aws-credentials不工作
如何使用适当的AWS凭据启动集群?
使用Spark 1.5,我使用spark-ec2
可执行文件和--copy-aws-credentials
标志启动了一个EC2集群。登录到主节点后,未设置$AWS_ACCESS_KEY_ID
和。它们都设置在启动集群的机器上。尝试通过主节点上的spark-shell
中的sc.textFile("s3n://...)
获取文件会引发请求凭据的错误。spark-ec2 --copy-aws-credentials不工作
如何使用适当的AWS凭据启动集群?
我遇到了这个完全相同的问题。
从查看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,有许多选项。
~/spark/conf/core-site.xml
和~/mapreduce/conf/core-site.xml
。每次停止并启动群集时,都必须重做此操作,这很烦人。export AWS_ACCESS_KEY_ID=...
和export AWS_SECRET_ACCESS_KEY=...
您提交星火作业(例如在提交你的工作在同一个脚本)s3n
URL(s3n://YourAccesKey:[email protected]/yourdata
)