У меня есть файл python для подсчета bigrams с использованием mrjob up на Hadoop (версия 2.6.0), но я не получаю вывод, который я надеюсь и у меня возникли проблемы с расшифровкой вывода в моем терминале, где я ошибаюсь.«Счетчики с шага 1: нет счетчиков найдено» с использованием Hadoop и mrjob
Мой код:
regex_for_words = re.compile(r"\b[\w']+\b")
class BiCo(MRJob):
OUTPUT_PROTOCOL = mrjob.protocol.RawProtocol
def mapper(self, _, line):
words = regex_for_words.findall(line)
wordsinline = list()
for word in words:
wordsinline.append(word.lower())
wordscounter = 0
totalwords = len(wordsinline)
for word in wordsinline:
if wordscounter < (totalwords - 1):
nextword_pos = wordscounter+1
nextword = wordsinline[nextword_pos]
bigram = word, nextword
wordscounter +=1
yield (bigram, 1)
def combiner(self, bigram, counts):
yield (bigram, sum(counts))
def reducer(self, bigram, counts):
yield (bigram, str(sum(counts)))
if __name__ == '__main__':
BiCo.run()
Я написал код в моей функции картографа (в основном, все вверх по линии «выход») на моей локальной машине, чтобы убедиться, что мой код был захват биграмм, как задумано, так Я думаю, что это должно работать нормально ... но, конечно, что-то не так.
Когда я запускаю код на сервере Hadoop, я получаю следующий вывод (извинения, если это больше, чем это необходимо), экран выводит тонну информации, и я еще не уверен, что будет полезно для хонингования в на проблемной области):
HADOOP: 2015-10-25 17:00:46,992 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1355)) - Running job: job_1438612881113_6410
HADOOP: 2015-10-25 17:00:52,110 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1376)) - Job job_1438612881113_6410 running in uber mode : false
HADOOP: 2015-10-25 17:00:52,111 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1383)) - map 0% reduce 0%
HADOOP: 2015-10-25 17:00:58,171 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1383)) - map 33% reduce 0%
HADOOP: 2015-10-25 17:01:00,184 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1383)) - map 100% reduce 0%
HADOOP: 2015-10-25 17:01:07,222 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1383)) - map 100% reduce 100%
HADOOP: 2015-10-25 17:01:08,239 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1394)) - Job job_1438612881113_6410 completed successfully
HADOOP: 2015-10-25 17:01:08,321 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1401)) - Counters: 51
HADOOP: File System Counters
HADOOP: FILE: Number of bytes read=2007840
HADOOP: FILE: Number of bytes written=4485245
HADOOP: FILE: Number of read operations=0
HADOOP: FILE: Number of large read operations=0
HADOOP: FILE: Number of write operations=0
HADOOP: HDFS: Number of bytes read=1013129
HADOOP: HDFS: Number of bytes written=0
HADOOP: HDFS: Number of read operations=12
HADOOP: HDFS: Number of large read operations=0
HADOOP: HDFS: Number of write operations=2
HADOOP: Job Counters
HADOOP: Killed map tasks=1
HADOOP: Launched map tasks=4
HADOOP: Launched reduce tasks=1
HADOOP: Rack-local map tasks=4
HADOOP: Total time spent by all maps in occupied slots (ms)=33282
HADOOP: Total time spent by all reduces in occupied slots (ms)=12358
HADOOP: Total time spent by all map tasks (ms)=16641
HADOOP: Total time spent by all reduce tasks (ms)=6179
HADOOP: Total vcore-seconds taken by all map tasks=16641
HADOOP: Total vcore-seconds taken by all reduce tasks=6179
HADOOP: Total megabyte-seconds taken by all map tasks=51121152
HADOOP: Total megabyte-seconds taken by all reduce tasks=18981888
HADOOP: Map-Reduce Framework
HADOOP: Map input records=28214
HADOOP: Map output records=133627
HADOOP: Map output bytes=2613219
HADOOP: Map output materialized bytes=2007852
HADOOP: Input split bytes=304
HADOOP: Combine input records=133627
HADOOP: Combine output records=90382
HADOOP: Reduce input groups=79518
HADOOP: Reduce shuffle bytes=2007852
HADOOP: Reduce input records=90382
HADOOP: Reduce output records=0
HADOOP: Spilled Records=180764
HADOOP: Shuffled Maps =3
HADOOP: Failed Shuffles=0
HADOOP: Merged Map outputs=3
HADOOP: GC time elapsed (ms)=93
HADOOP: CPU time spent (ms)=7940
HADOOP: Physical memory (bytes) snapshot=1343377408
HADOOP: Virtual memory (bytes) snapshot=14458105856
HADOOP: Total committed heap usage (bytes)=4045406208
HADOOP: Shuffle Errors
HADOOP: BAD_ID=0
HADOOP: CONNECTION=0
HADOOP: IO_ERROR=0
HADOOP: WRONG_LENGTH=0
HADOOP: WRONG_MAP=0
HADOOP: WRONG_REDUCE=0
HADOOP: Unencodable output
HADOOP: TypeError=79518
HADOOP: File Input Format Counters
HADOOP: Bytes Read=1012825
HADOOP: File Output Format Counters
HADOOP: Bytes Written=0
HADOOP: 2015-10-25 17:01:08,321 INFO [main] streaming.StreamJob (StreamJob.java:submitAndMonitorJob(1022)) - Output directory: hdfs:///user/andersaa/si601f15lab5_output
Counters from step 1:
(no counters found)
Я смущенный, почему нет счетчиков не будет найдено, начиная с шага 1 (то, что я предполагаю, что картограф часть моего кода, который может быть ложным предположением) , Если я правильно читаю любой из выходных данных Hadoop, похоже, что это делает его, по крайней мере, на стадии уменьшения (поскольку есть группы «Уменьшить вход»), и он не находит ошибок перепутывания. Я думаю, что могут быть некоторые ответы на то, что происходит не так в «Unencodable output: TypeError = 79518», но никакое количество поисковых запросов Google, которые я сделал, не помогло понять, что это за ошибка.
Любая помощь или понимание очень ценятся.