【发布时间】:2017-03-19 12:37:49
【问题描述】:
我在 spark 中编写了一个 python 代码,我想在 Amazon 的 Elastic Map reduce 上运行它。
我的代码在我的本地机器上运行良好,但我对如何在亚马逊的 AWS 上运行它有点困惑?
更具体地说,我应该如何将我的 python 代码转移到主节点?我是否需要将我的 Python 代码复制到我的 s3 存储桶并从那里执行它?或者,我应该 ssh 进入 Master 并将我的 python 代码 scp 到 Master 中的 spark 文件夹吗?
目前,我尝试在终端本地运行代码并连接到集群地址(我是通过读取 spark 的 --help 标志的输出来完成此操作的,所以我可能会在这里遗漏几个步骤)
./bin/spark-submit --packages org.apache.hadoop:hadoop-aws:2.7.1 \
--master spark://hadoop@ec2-public-dns-of-my-cluster.compute-1.amazonaws.com \
mypythoncode.py
我在有和没有我的权限文件的情况下都试过了,即
-i permissionsfile.pem
但是,它失败了,堆栈跟踪在
行显示了一些东西Exception in thread "main" java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified as the username or password (respectively) of a s3n URL, or by setting the fs.s3n.awsAccessKeyId or fs.s3n.awsSecretAccessKey properties (respectively).
at org.apache.hadoop.fs.s3.S3Credentials.initialize(S3Credentials.java:66)
at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.initialize(Jets3tNativeFileSystemStore.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
......
......
我的方法是否正确,我需要解决访问问题才能继续前进,还是我走错了方向?
正确的做法是什么?
我在 youtube 上搜索了很多,但找不到任何关于在 Amazon 的 EMR 上运行 Spark 的教程。
如果有帮助,我正在处理的数据集是亚马逊公共数据集的一部分。
【问题讨论】:
标签: amazon-web-services apache-spark amazon-s3 pyspark