Hadoop Streaming Job failed błąd w Pythonie

Z tego poradnika z powodzeniem przeprowadziłem przykładowe ćwiczenie. Ale po uruchomieniu mojej pracy mapreduce dostaję następujący błąd
ERROR streaming.StreamJob: Job not Successful!
10/12/16 17:13:38 INFO streaming.StreamJob: killJob...
Streaming Job Failed!

Błąd z pliku dziennika

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:311)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:545)
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:132)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)

Mapper.py

import sys

i=0

for line in sys.stdin:
    i+=1
    count={}
    for word in line.strip().split():
        count[word]=count.get(word,0)+1
    for word,weight in count.items():
        print '%s\t%s:%s' % (word,str(i),str(weight))

Reducer.py

import sys

keymap={}
o_tweet="2323"
id_list=[]
for line in sys.stdin:
    tweet,tw=line.strip().split()
    #print tweet,o_tweet,tweet_id,id_list
    tweet_id,w=tw.split(':')
    w=int(w)
    if tweet.__eq__(o_tweet):
        for i,wt in id_list:
            print '%s:%s\t%s' % (tweet_id,i,str(w+wt))
        id_list.append((tweet_id,w))
    else:
        id_list=[(tweet_id,w)]
        o_tweet=tweet

[edytuj] polecenie uruchomienia zadania:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-0.20.0-streaming.jar -file /home/hadoop/mapper.py -mapper /home/hadoop/mapper.py -file /home/hadoop/reducer.py -reducer /home/hadoop/reducer.py -input my-input/* -output my-output

Input to dowolna losowa Sekwencja zdań.

Dzięki,

Author: db42, 2010-12-16

5 answers

Twój-mapper i-reducer powinny być tylko nazwą skryptu.

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-0.20.0-streaming.jar -file /home/hadoop/mapper.py -mapper mapper.py -file /home/hadoop/reducer.py -reducer reducer.py -input my-input/* -output my-output

Gdy Skrypty znajdują się w zadaniu, które znajduje się w innym folderze hdfs, który jest względem zadania próby wykonywanego jako "."(FYI jeśli kiedykolwiek chcesz reklamować inny plik, taki jak tabela wyszukiwania, możesz go otworzyć w Pythonie, tak jakby znajdował się w tym samym katalogu co twoje Skrypty, podczas gdy twój skrypt jest w M / R job)

Upewnij się również, że masz chmod a + x mapper.py i chmod a + x reducer.py

 20
Author: Joe Stein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-16 21:00:42

Spróbuj dodać

 #!/usr/bin/env python

Najlepszy scenariusz.

Lub

-mapper 'python m.py' -reducer 'r.py'
 13
Author: Marvin W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 15:14:53

Ostatnio natknąłem się na ten błąd i mój problem okazał się czymś równie oczywistym (z perspektywy czasu) jak te inne rozwiązania:

Po prostu miałem błąd w kodzie Pythona. (W moim przypadku używałem formatowania strun Pythona v2.7, podczas gdy klaster AWS EMR, który miałem, używał Pythona v2.6).

Aby znaleźć rzeczywisty błąd Pythona, przejdź do Job Tracker web UI (w przypadku AWS EMR, port 9100 dla AMI 2.X i port 9026 dla AMI 3.x); znajdź nieudany maper; otwórz jego dzienniki; i odczytaj stderr wyjście.

 2
Author: Dolan Antenucci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-12 18:38:39

Upewnij się, że twój katalog wejściowy zawiera tylko poprawne Pliki

 0
Author: user6454733,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-11 22:43:27

Ja też miałem ten sam problem próbowałem rozwiązania Marvina W i również zainstalować spark, upewnij się, że masz zainstalowany spark, nie tylko pyspark (zależność), ale także zainstalować framework installtion tutorial

Śledź ten tutorial

 0
Author: yunus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 17:33:57