【问题标题】:Installing Python packages via Bootstrap Actions for PySpark on EMR通过 EMR 上 PySpark 的引导操作安装 Python 包
【发布时间】: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


【解决方案1】:

您是否尝试过使用 .sh 文件引导集群:

sudo pip3 install pandas

它对我有用!

但我确保看到集群在 master 上使用 which pythonwhich pip

【讨论】:

    猜你喜欢
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多