потоковая передача hadoop: импорт модулей в EMR - PullRequest
4 голосов
/ 15 ноября 2011

Этот предыдущий вопрос адресован как импортировать такие модули, как nltk для потоковой передачи hadoop.

Намечены следующие шаги:

zip -r nltkandyaml.zip nltk yaml
mv ntlkandyaml.zip /path/to/where/your/mapper/will/be/nltkandyaml.mod

Теперь вы можете импортировать модуль nltk для использования в вашем скрипте Python: импорт zipimport

importer = zipimport.zipimporter('nltkandyaml.mod')
yaml = importer.load_module('yaml')
nltk = importer.load_module('nltk')

У меня есть работа, которую я хочу запустить на EMR Amazon , и я не уверен, куда помещать заархивированные файлы. Нужно ли создавать сценарий начальной загрузки в параметрах Boostrapping или я должен поместить tar.gz в S3, а затем в дополнительные аргументы? Я довольно новичок во всем этом и был бы признателен за ответ, который мог бы помочь мне пройти через этот процесс.

1 Ответ

2 голосов
/ 15 ноября 2011

У вас есть следующие варианты:

  1. Создайте скрипт действия начальной загрузки и поместите его на S3. Этот скрипт загружает модуль в любом формате, который вы предпочитаете, и размещает его там, где он доступен для вашего картографа / редуктора. Чтобы выяснить, куда именно вам нужно поместить файлы, запустите кластер таким образом, чтобы он не завершил работу после завершения, выполните команду ssh и изучите структуру каталогов.

  2. Используйте mrjob для запуска ваших рабочих процессов. При запуске задания с помощью mrjob можно указать bootstrap_python_packages , который mrjob установит автоматически, распаковав .tar.gz и запустив setup.py install .

http://packages.python.org/mrjob/configs-runners.html

Я бы предпочел вариант 2, потому что mrjob также очень помогает в разработке заданий MapReduce в Python. В частности, он позволяет запускать задания локально (с Hadoop или без него), а также на EMR, что упрощает отладку.

...