amazon-web-services - 如何在 Amazon Aws 上运行 Python Spark 代码?

标签 amazon-web-services apache-spark amazon-s3 pyspark

我在 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 的教程。

如果有帮助,我正在处理的数据集是亚马逊公共(public)数据集的一部分。

最佳答案

  • 转到 EMR,创建新集群... [建议:仅从 1 个节点开始,仅用于测试目的]。
  • 点击复选框安装Spark ,如果您不需要这些附加程序,则可以取消选中其他框。
  • 通过选择 VPC 和安全 key (ssh key ,又名 pem key )进一步配置集群
  • 等待它启动。一旦您的集群说“等待”,您就可以继续进行了。
  • [通过 GUI 提交 Spark] 在 GUI 中,您可以添加一个 Step 并选择 Spark 作业,然后将您的 spark 文件上传到 S3 ,然后选择新上传的 S3 文件的路径。一旦运行,它将成功或失败。如果失败,请稍等片刻,然后单击步骤列表中该步骤行的“查看日志”。不断调整你的脚本,直到你让它工作。

    [通过命令行提交] 按照页面顶部的 ssh 说明通过 SSH 连接到驱动程序节点。进入后,使用命令行文本编辑器创建一个新文件,并将脚本的内容粘贴进去。然后 spark-submit yourNewFile.py。如果失败,您将直接看到错误输出到控制台。调整你的脚本,然后重新运行。这样做直到你让它按预期工作。

  • 注:从本地机器到远程机器运行作业很麻烦,因为您实际上可能导致本地 spark 实例负责一些昂贵的计算和网络上的数据传输。这就是您要从 EMR 中提交 AWS EMR 作业的原因。

    关于amazon-web-services - 如何在 Amazon Aws 上运行 Python Spark 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443659/

    相关文章:

    scala - 如何在 Spark 中对 RDD 进行排序和限制?

    scala - 更正 apache spark 的 build.sbt 文件

    c# - 是否可以从 .NET API 从 AWS IAM 用户获取规范用户 ID?

    amazon-web-services - 我如何使用 AWS Lambda ( Python ) 调用一个步骤函数

    ruby - 如何让我的 AWS Lambda 访问存储在 vendor/bundle 中的 gem?

    amazon-web-services - 在 Elastic Beanstalk 上更新弃用的 php 平台

    java - Amazon S3 预签名 URL 转义 key 中的斜杠

    amazon-web-services - 如何增加 AWS Fargate 容器中的磁盘空间?

    python - 每当我开始时,Pyspark都会给这些

    hadoop - org.apache.hadoop.fs.s3native.NativeS3FileSystem 未找到