Пакеты Python не импортируются в AWS EMR

Я пытаюсь отправить задание в кластер EMR через Livy. Мой сценарий Python (для отправки задания) требует импорта нескольких пакетов. Я установил все эти пакеты на главный узел EMR. Основной сценарий находится на S3, который вызывается сценарием для отправки задания Ливи из EC2. Каждый раз, когда я пытаюсь запустить задание на удаленном компьютере (EC2), оно умирает с сообщением об ошибках импорта (нет модуля с именем [название мода])

Я застрял на этом больше недели и не могу найти возможное решение. Любая помощь будет высоко ценится. Спасибо.


person Shweta    schedule 30.03.2020    source источник
comment
Библиотеки также требуются исполнителям, поэтому все они должны присутствовать на всех основных узлах. Один из простых способов сделать это - использовать сценарий начальной загрузки. В Интернете есть множество ресурсов о том, как это сделать. Также вы можете проверить мой ответ здесь: stackoverflow.com/a/57408712/4245859   -  person Bitswazsky    schedule 17.04.2020


Ответы (1)


Эти пакеты, которые вы пытаетесь импортировать. Это индивидуальные пакеты? если да, то как вы их упаковали. Вы создали файл колеса или zip-файл и указали их как --py-files в своей отправке искры через livy?

Возможная проблема.

Вы установили пакеты только на главный узел. Вам нужно будет войти в свои рабочие узлы и установить там пакеты. В противном случае, когда вы подготовите emr, установите пакеты с помощью действий начальной загрузки

У вас должна быть возможность добавлять библиотеки с помощью параметра —py-files, но безопаснее просто загрузить файлы wheel и использовать их, а не архивировать что-либо самостоятельно.

person Emerson    schedule 30.03.2020
comment
Нет, это стандартные библиотеки, такие как sqlalchemy и psycopg2. Кроме того, я заархивировал их и передал как аргумент pyfiles в Livy submit. - person Shweta; 01.04.2020
comment
Если это emr, вам лучше установить их с помощью действий начальной загрузки, чтобы это выполнялось один раз, поскольку библиотека не изменится. Если это пользовательская библиотека, то в этот момент вы бы фактически передали их как -py-файлы. В любом случае ... если вы хотите пойти по этому пути, попробуйте загрузить файлы whl для этих библиотек, а затем использовать их. Помните, что когда вы устанавливаете пакеты в главном режиме, он не делает их доступными на всех рабочих узлах. - person Emerson; 01.04.2020