使用Spark 1.5,我使用spark-ec2
可执行文件和--copy-aws-credentials
标志启动了EC2集群。登录主节点后,未设置$AWS_ACCESS_KEY_ID
和$AWS_SECRET_ACCESS_KEY
。它们都在启动集群的计算机上设置。尝试通过主节点上sc.textFile("s3n://...)
中的spark-shell
获取文件会引发错误请求凭据。
如何使用适当的AWS凭据启动群集?
答案 0 :(得分:0)
我遇到了同样的问题。
通过查看spark-ec2安装脚本[1],我了解到密钥被复制到hdfs安装的core-site.xml
文件中。您可以查看~/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
网址(s3n://YourAccesKey:YourSecretAccessKey@yourbucket/yourdata
)