При запуске программы MRJob она не может создать каталог и завершается ошибкой - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть следующая программа:

from mrjob.job import MRJob
from mrjob.step import MRStep

class RatingsBreakdown(MRJob):
    def steps(self):
        return [
                MRStep(mapper=self.mapper_get_ratings,
                       reducer=self.reducer_count_ratings)
                ]

    def mapper_get_ratings(self, _, line):
        (userID, movieID, rating, timestamp) = line.split('\t')
        yield rating, 1


    def reducer_count_ratings(self, key, values):
        yield key, sum(values)


if __name__ == '__main__':
    RatingsBreakdown.run()

, и я пытаюсь запустить ее в Ubuntu 18.04 с:

sudo python3 RatingsBreakdown.py -r hadoop --hadoop-bin /usr/local/hadoop/bin/hadoop u.data

, где u.data - источник данных.

Программы останавливаются, и я продолжаю получать следующую ошибку:

OSError: Could not mkdir 
hdfs:///user/root/tmp/mrjob/RatingsBreakdown.root.20191110.010957.606661/files/wd

Когда я пытаюсь запустить команду mkdir вручную, я получаю:

mkdir: Incomplete HDFS URI, no host: hdfs:///user/root/tmp/mrjob/RatingsBreakdown.root.20191110.010957.606661/files/w

Мне нужно упомянутьчто у меня есть функциональная установка Hadoop (она работает с программами на основе Java), и среда Python также настроена хорошо. Если я не использую бегун hadoop, программа выполняется правильно. Кажется, что есть проблема взаимодействия между Python (MRJob) и Hadoop.

Я искал и искал, но не могу найти ничего полезного. Пожалуйста, помогите мне! Спасибо

...