2017-05-12 6 views
0

Nun, ich bin neu zu Mapreducer-Programmen. Wenn ich also ein Beispiel für mapreducer-Programme suche, bekomme ich nur ein Wortzahl-Programm. Alle Programme, die sich auf die Wortzahl beziehen, verwenden den Text als Eingabe. Ich habe versucht, eine CSV-Datei als Eingabe und der Reducer funktioniert nicht, wie es für Textdatei funktioniert. http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/ Dies ist das aktuelle Beispiel, das ich betrachte. Würde jemand den Grund dafür erklären?Mapreduce wordcount in python

Antwort

0

können Sie die collections.Counter Klasse verwenden:

from collections import Counter 

with open(filename) as handler: 
    counter = Counter(handler.read().split()) 

print(counter.most_common(10)) 

Auf der Dokumentation Sie eine Menge nützlicher Informationen finden.

+0

Vielen Dank für die Hilfe. Aber meine Zweifel sind anders. Ich versuche, an mapreduce-Programmen zu arbeiten. – SVRJ

0

Unterscheiden zwischen

  • MapReduce: ein Programmiermodell für die parallele Ausführung
  • Python: eine Programmiersprache
  • Hadoop: ein Python-Cluster-Plattform auf

laufen Haben Sie wirklich brauchen die MapReduce für Hadoop oder nur ein reines Python-Beispiel? Wenn das letztere, kann es viel einfacher als Ihr Link sein:

import multiprocessing 
def word_count(line, delimiter=","): 
    """Worker""" 
    summary = {} 
    for word in line.strip().split(delimiter): 
     if word in summary: 
      summary[word] += 1 
     else: 
      summary[word] = 1 
    return summary 
pool = multiprocessing.Pool() 
result = {} 
# Map: each line to a separate worker 
for summary in pool.imap_unordered(word_count, open("/path/to/file.csv")): 
    # Reduce: aggregate the result of each line into one result 
    for (word, count) in summary.items(): 
     result[word] = result[word]+count if word in result else count 
print(result) 
+0

Da ich gerade an der Hadoop Plattform arbeite, würde ich gerne mehr über Map Reduce Programme erfahren. Daher würde ich gerne die Antwort in diesem Paradigma wissen. Danke für die Hilfe :) – SVRJ

Verwandte Themen