Pydoop mapreduce "AttributeError: модуль 'wordcount_minimal' не имеет атрибута '__main__'" - PullRequest
0 голосов
/ 08 сентября 2018

Я установил Pydoop и пытаюсь запустить MapReduce задания. Просто для пробного запуска я попытался выполнить примеры подсчета слов wordcount_minimal.py и wordcount_full.py. Оба они висят на этапе карты. В конце stderr я нахожу это сообщение согласно сценарию, который я запускаю:

модуль 'wordcount_minimal' не имеет атрибута ' main '

или

модуль 'wordcount_full' не имеет атрибута ' main '

Я выполнил задание с помощью команды:

pydoop submit --upload-файл-в-кэш wordcount_full.py wordcount_full hdfs_input_dir hdfs_output_dir

Невозможно найти причину этого. Есть идеи, в чем может быть причина?

Мне удалось выполнить пример из pydoop script с использованием функций map и reduce, и он успешно завершен. Но с опцией pydoop submit у меня есть эта проблема. Не уверен, что я что-то упустил.

PS: у меня кластер с 2 узлами, работающими Hortonworks HDP 2.6.5. Pydoop установлен на них обоих.

1 Ответ

0 голосов
/ 12 сентября 2018

По умолчанию pydoop submit ожидает точку входа с именем __main__, но вы можете изменить это с помощью --entry-point. Например, если ваш код:

class Mapper ...
class Reducer ...
def run():
    pipes.run_task(pipes.Factory(Mapper, Reducer))

Вы можете запустить его через pydoop submit --entry-point run ...

...