Задание потоковой передачи Hadoop не выполнено (не выполнено) в Python

Я пытаюсь запустить задание Map-Reduce в Hadoop Streaming с помощью сценариев Python и получаю те же ошибки, что и Ошибка выполнения задания Hadoop Streaming в Python , но эти решения не работали для меня.

Мои сценарии работают нормально, когда я запускаю "cat sample.txt | ./p1mapper.py | sort | ./p1reducer.py"

Но когда я запускаю следующее:

./bin/hadoop jar contrib/streaming/hadoop-0.20.2-streaming.jar \
    -input "p1input/*" \
    -output p1output \
    -mapper "python p1mapper.py" \
    -reducer "python p1reducer.py" \
    -file /Users/Tish/Desktop/HW1/p1mapper.py \
    -file /Users/Tish/Desktop/HW1/p1reducer.py

(NB: даже если я удалю "python" или наберу полный путь для -mapper и -reducer, результат будет таким же)

Вот результат, который я получаю: p1mapper.py

#!/usr/bin/env python

import sys
import re

SEQ_LEN = 4

eos = re.compile('(?<=[a-zA-Z])\.')   # period preceded by an alphabet
ignore = re.compile('[\W\d]')

for line in sys.stdin:
    array = re.split(eos, line)
    for sent in array:
        sent = ignore.sub('', sent)
        sent = sent.lower()
        if len(sent) >= SEQ_LEN:
            for i in range(len(sent)-SEQ_LEN + 1):
                print '%s 1' % sent[i:i+SEQ_LEN]

p1reducer.py

#!/usr/bin/env python

from operator import itemgetter
import sys

word2count = {}

for line in sys.stdin:
    word, count = line.split(' ', 1)
    try:
        count = int(count)
        word2count[word] = word2count.get(word, 0) + count
    except ValueError:    # count was not a number
        pass

# sort
sorted_word2count = sorted(word2count.items(), key=itemgetter(1), reverse=True)

# write the top 3 sequences
for word, count in sorted_word2count[0:3]:
    print '%s\t%s'% (word, count)

Был бы очень признателен за любую помощь, спасибо!

ОБНОВЛЕНИЕ:

hdfs-site.xml:










          dfs.replication

          1




mapred-site.xml:










          mapred.job.tracker

          localhost:54311




5
задан Community 23 May 2017 в 12:01
поделиться