Verwenden Sie Python, um MapReduce in Hadoop zu implementieren

Hadoop umfasst HDFS (verteiltes Dateisystem), YARN (Ressourcenmanager) und MapReduce (Programmiermodell).
1. Das Programmierprinzip von
MapReduce MapReduce ist ein Programmiermodus für verteilte Operationen an großen Datensätzen. Die beliebte Methode besteht darin, die Aufgaben in verschiedene Maschinen zu unterteilen, um sie zu erledigen, und sie dann zu sammeln und zusammenzufassen.
Kartenphase (Zerlegung): Separate Aufgaben, jede Maschine versucht, ihre eigenen internen HDFS-Speicherinformationen zu berechnen (dh komplexe Probleme werden in mehrere einfache Aufgaben unterteilt und Daten werden in Blöcken gespeichert).
Reduzieren Sie die Phase (zusammengeführt): Mehrere Aufgaben in parallel, wird Das Ausgabeergebnis der Karte wird als Eingabe- und kombinierte Lösung verwendet.
Wenn Sie Python zum Schreiben von MapReduce verwenden, verwenden Sie die HadoopStreaming-API, um Daten zwischen der Map-Funktion und der Reduce-Funktion über STDIN (Standardeingabe) und STDOUT (Standardausgabe) zu übertragen.
Zweitens kartiert das Programm
(1) die Stufe

import sys
def map():
    #标准输入读取的数据每一行是字符串格式,可以使用split进行分割
    for line in sys.stdin:
        words = line.split(" ")
        for word in  words:
            #单词作为key,1作为value
            print("\t".join([word.strip(),"1"]))`

(2) Phase reduzieren

import sys
from operator import itemgetter
def reduce():
    word_count_dict = {
    
    }
    for line in sys.stdin:
        kv = line.split("\t")
        word = kv[0].strip()
        count = int(kv[1].strip())
        #使用字典类型数据get(key,default)方法,统计单词个数,如没有默认填写0,如果有在原有的基础上累加
        word_count_dict[word] = word_count_dict.get(word,0)+count
    #将统计的数据按照key值(即word)的首字母进行排序
    sorted_word_count = sorted(word_count_dict.items(),key = itemgetter(0))

    for word ,count in sorted_word_count:
        print("\t".join([word.str(count)]))

(3) Ausführen (Windows-System)
1) Verwenden Sie zuerst den Befehl (Typ Dokumentname), um das TXT-Dokument anzuzeigen,
öffnen Sie die Eingabeaufforderung cmd , gehen Sie zum Dokumentspeicherpfad und geben Sie den Typ word.txt ein (word.txt ist das Dokument, das angezeigt werden soll), wie in der Abbildung gezeigt:
Fügen Sie hier eine Bildbeschreibung ein
2) Verwenden Sie den Befehl, um das Kartenprogramm auszuführen.
Zeigen Sie die Ergebnisse in der Reihenfolge der Programmausführung an: Geben Sie word.txt | python map.py ein, das
gemäß dem Programm ausgeführt wird. und sortieren Sie die Ausführungsergebnisse in alphabetischer Reihenfolge: Geben Sie word.txt | python map.py | sort ein.
Fügen Sie hier eine Bildbeschreibung ein
3)
Führen Sie den Reduktionsprogrammtyp word.txt | python map.py | sort | python redu.py aus
Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/qq_44801116/article/details/109828349
Empfohlen
Rangfolge