Im zweiten Teil meiner kleinen Serie der MapReduce Entwurfsmustern für Microsoft HDInsight möchte ich ein weiteres Beispiel für eine Numerische Aggregation vorstellen.
Diesmal geht es um die Berechnung von Durchschnittswerten…
Im ersten Teil dieser Serie hatte ich ein Beispiel für einen Min/Max/Count MapReduce-Algorithmus vorgestellt.
Diesmal möchte ich die Sammlung um ein Beispiel für eine Durchschnittswertberechnung erweitern.
Beispiel "Average"
Bei diesem Beispiel soll die durchschnittliche Kommentarlänge pro Stunde errechnet werden.
Hierzu extrahiert die Mapper-Funktion die Werte der CreationDate- und Text-Attribute der XML-Quelle und gibt den Stunden-Wert, sowie die Textlängem als Key/Value-Paare zurück:
Die Combiner- und Reducer-Funktionen aggregieren anschließend die entsprechenden Werte.
Damit die Werte durch die Combiner-Funktion nicht verfälscht werden, muss die Summe mittels der Anzahl der Datensätze rekonstruiert werden.
Der Reducer liefert erneut die Ausgabewerte – zur späteren Weiterverarbeitung – im Tab-getrennten Format zurück.