Установка пакетов Python через действия Bootstrap для PySpark в EMR

У меня проблема, которая сводит меня с ума отчасти потому, что она такая простая.

Итак, у меня есть задание ETL, которое я хотел бы выполнить с помощью pySpark в EMR. Проблема в том, что мне нужно установить пакеты, такие как: numpy, py-stringmatching и т. Д., И я не могу предварительно установить пакеты перед запуском заданий.

Вот где я:

Установите экземпляр ec2, сегменты s3, успешно запустил кластер Spark с помощью пользовательского интерфейса на AWS. Я попытался использовать приведенный ниже сценарий оболочки для установки чего-либо с помощью «действий начальной загрузки», а затем запустить приложение 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, если вы знаете что-нибудь об этом или можете указать мне правильное направление.


person Ajay Sharma    schedule 16.04.2017    source источник
comment
Привет. Честно говоря, Numpy должен быть предварительно отправлен на EMR. Но проблема не в этом. Это должно работать - вы ждете, пока кластер не перейдет в зеленое состояние «Ожидание / готов», прежде чем пытаться это сделать? Что произойдет, если вы удалите проверку check_numpy.py, дождитесь, пока кластер перейдет в зеленое состояние, а затем посмотрите, что произойдет, если вы сделаете это вручную?   -  person Henry    schedule 17.04.2017
comment
Шаги выполняются только тогда, когда кластер находится в состоянии готовности, поэтому, к сожалению, проблема не в этом. Вы правы, хотя этот numpy в настоящее время установлен по умолчанию на EMR. Какую ошибку вы получаете при попытке импортировать numpy?   -  person Jonathan Kelly    schedule 18.04.2017
comment
Кстати, это тоже не проблема, но вы можете посмотреть, есть ли в репозитории yum AmazonLinux этот пакет, а не устанавливать его с помощью pip. Версия, которую вы получите из репозитория AmazonLinux (если она есть), будет предварительно скомпилирована, тогда как я думаю, что ту, которую вы получите, установив ее с помощью pip, вероятно, придется скомпилировать из исходного кода, что может занять немного больше времени. Это может не иметь большого значения для небольших пакетов, но для некоторых (например, numpy, на самом деле) требуется очень много времени для компиляции из исходного кода.   -  person Jonathan Kelly    schedule 18.04.2017
comment
Кто-нибудь когда-нибудь в этом разбирался? Я все еще борюсь с установкой пакетов Python на EMR (в частности, Pandas). Я перепробовал все, что мог придумать.   -  person Evan Zamir    schedule 03.04.2018


Ответы (1)


Вы пытались загрузить кластер с помощью файла .sh:

sudo pip3 install pandas

У меня это сработало!

Но я убедился, что кластер использует which python и which pip на главном сервере.

person PauloHFM    schedule 31.07.2020