У меня есть два скрипта Python, которые предназначены для работы в Amazon Elastic MapReduce: один в качестве преобразователя и один в качестве редюсера. Я только недавно расширил сценарий сопоставления, чтобы потребовать еще пару локальных моделей, которые я создал, и обе они находятся в пакете под названием SentimentAnalysis. Как правильно импортировать скрипт Python из локального пакета Python на S3? Я попытался создать ключи S3, имитирующие мою файловую систему, в надежде, что относительные пути будут работать, но, увы, это не сработало. Вот что я вижу в файлах журнала на S3 после того, как шаг не удался:
Traceback (most recent call last):
File "/mnt/var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_201407250000_0001/attempt_201407250000_0001_m_000000_0/work/./sa_mapper.py", line 15, in <module>
from SentimentAnalysis import NB, LR
ImportError: No module named SentimentAnalysis
Соответствующая файловая структура выглядит следующим образом:
sa_mapper.py
sa_reducer.py
SentimentAnalysis/NB.py
SentimentAnalysis/LR.py
И mapper.py имеет:
from SentimentAnalysis import NB, LR
Я попытался отразить файловую структуру в S3, но, похоже, это не сработало.
Как лучше всего настроить S3 или EMR, чтобы sa_mapper.py мог импортировать NB.py и LR.py? Есть ли какой-то особый трюк для этого?