Ermittlung von Worthufigkeiten in einem Text

Als Beispiel fr das MapReduce-Verfahren soll in einem Text ermittelt werden, welche Wrter darin wie oft vorkommen. Fr das Beispiel ist es wichtig, dass die Reihenfolge der Wrter eindeutig vorgegeben ist. Dadurch kann man den Text als eine Liste von Schlssel-Wert-Paaren interpretieren, wobei die Position jedes einzelnen Worts den Schlssel und das Wort selbst den Wert darstellt.

Um die gestellte Aufgabe in einem einzigen Prozess herauszufinden, muss man sich Wort fr Wort an diesem Text entlang hangeln und durch Vergleiche mit jedem zuvor entdeckten Wort prfen, ob das aktuell betrachtete schon einmal aufgetaucht ist. Ist das nicht der Fall, legt man eine Variable fr dieses Wort an und trgt darin die bisherige Hufigkeit 1 ein. Andernfalls, wenn man zum wiederholten mal auf ein Wort stt, kann man auf weitere Vergleiche verzichten und erhht den Wert der zugehrigen Variablen um 1. Am Ende es Vorgangs hat man so viele Variablen wie in dem Text unterschiedliche Wrter vorkommen, und in jeder davon steht die Hufigkeit, mit der das zugehrige Wort im Text vorkommt.

Die Tabelle "Solo" der Excel-Mappe Wrter.xls zeigt in Spalte A Wort fr Wort einen Beispieltext. Die um eins verminderte Zeilennummer entspricht dem ursprnglichen Schlssel, nmlich der Position jedes Worts. Das erste Wort, "wer" kann vorher noch nicht aufgetaucht sein, man braucht also 0 Vergleiche, um zu wissen, dass 1 neue Variable angelegt werden muss. Das zweite Wort "nichts" muss man fr dieselbe Erkenntnis mit einem vorherigen Wort vergleichen, das dritte Wort "wei" mit zwei vorherigen Wrtern und so weiter. beim fnften Wort tritt erstmals eine Dopplung auf: beim dritten Vergleich zeigt sich, dass "wei" schon einmal vorgekommen ist. Danach werden weitere Vergleiche berflssig, dafr muss man die bisherige und die gerade neu gefundene Hufigkeit (1) fr dieses Wort zusammenzhlen. Die Zahlen der Vergleiche, Summationen  und Variablen-Neuanlagen finden sich in den Spalten B, C und D. Das Endergebnis, die neuen Schlssel (Wrter) und Werte (Hufigkeiten) steht in den Spalten E und F. Der Zeitaufwand fr den gesamten Prozess wird bestimmt durch die Werte in Zeile 25: 121 Vergleiche, 13 Summationen und 10 Neuanlagen von Variablen. 
 
Gliedert man denselben Text wie in der Tabelle MapReduce angedeutet in 4 Abschnitte, kann man diese von 4 Rechnern parallel auszhlen lassen. Die Zahlen der dabei anfallenden Vergleiche, Summationen und Neuanlagen finden sich auch hier in den Spalten B, C und D, die Zwischenergebnisse der 4 parallelen Mappings in den Spalten E und F. Fr den Zeitaufwand jeder  Mapping-Phase sind die Summen in den Zeilen 8, 15, 22 und 28 mageblich. Frs Gesamtverfahren kommt es auf den langsamsten Teilprozess an, also den zum ersten oder dritten Textabschnitt.

In der anschlieenden Reduce-Phase luft derselbe Prozess noch einmal ab, nur diesmal auf Basis der gesammelten Zwischenergebnisse. Findet man dabei keine Dopplung, markiert man die Variable als vorlufiges Endergebnis in Spalte J, andernfalls werden die in Spalte F notierten Mappings addiert. Die Zahlen der dafr bentigten Vergleiche und Summationen stehen in den Zellen G28 und H28, Variablen-Neuanlagen fallen in der Reduce-Phase nicht an. Der Zeitbedarf frs komplette MapReduce-Verfahren wird also bestimmt durch den langsamsten der beteiligten Map-Prozesse (grn hinterlegt) und den Reduce-Prozess. Die Summen der nacheinander auszufhrenden Einzeloperationen stehen in den Feldern G29 bis I29. Vergleicht man diese rot hinterlegten Werte mit denen in der Tabelle "Solo", zeigt sich selbst fr dieses sehr kleine Beispiel mit vielen ungnstigen berlappungen eine deutliche Zeitersparnis. 






