【发布时间】:2017-09-12 12:33:53
【问题描述】:
我遇到了一个让我发疯的问题,部分原因是它太简单了。
所以我有一个 ETL 工作,我想在 EMR 上使用 pySpark 执行。问题是我需要安装一些包,例如:numpy、py-stringmatching 等,而我似乎无法在运行作业之前预安装这些包。
这就是我所在的地方:
设置 ec2 实例、s3 存储桶,使用 AWS 上的 UI 成功启动了 Spark 集群。我尝试使用下面的 shell 脚本通过“引导操作”安装东西,然后通过“步骤”运行 spark 应用程序,脚本如下。他们都生活在 S3 上,我只是让集群指向目录。
boostrap_actions.sh
#!/bin/bash -xe
sudo pip install -U py-stringmatching
check_numpy.py
import numpy as np
...它在运行 check_numpy.py 作为“步骤”时失败。如果您对此有所了解或可以指出正确的方向,请lmk。
【问题讨论】:
-
嗨。老实说,Numpy 应该在 EMR 上预先发货。但这不是问题。那应该运行 - 您是否等到集群处于“等待/就绪”绿色状态后再尝试?如果您删除 check_numpy.py 检查会发生什么,等待集群进入绿色状态,然后看看如果您手动执行此操作会发生什么?
-
只有在集群处于就绪状态时才会运行步骤,所以很遗憾这也不是问题所在。您是正确的,尽管 EMR 目前默认安装了 numpy。尝试导入 numpy 时遇到什么错误?
-
顺便说一句,这也不是问题,但您可能想看看 AmazonLinux yum 存储库是否有这个包,而不是使用 pip 安装它。您从 AmazonLinux 存储库(如果有的话)获得的版本将被预编译,而我认为通过 pip 安装它获得的版本可能必须从源代码编译,这可能需要更长的时间。对于较小的包可能没那么重要,但对于某些包(实际上像 numpy)需要很长时间才能从源代码编译。
-
有人知道这个吗?我仍在努力在 EMR(特别是 Pandas)上安装 Python 包。我已经尝试了所有我能想到的。
标签: amazon-web-services apache-spark amazon-s3 pyspark emr