У меня есть следующая программа:
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.
Я искал и искал, но не могу найти ничего полезного. Пожалуйста, помогите мне! Спасибо