Gabi und Sascha
Tags - Kategorien : Alle | Berlin | Bücher | Fotografie | Java | Linkhalde | Weichware | Verfassung

Nach der Medline Abstract Satzzerlegung habe ich heute im Hadoop-Cluster doppelte Sätze eleminiert. Hierfür werden die Abstracts mit dem java.text.BreakIterator in Sätze zerlegt. Die erzeugten Sätze werden normalisiert. Für die normalisierten Sätze wird ein MD5 berechnet. In der Mapping-Phase werden alle Sätze mit ihrem MD5 als key rausgeschrieben. Die Reduce-Phase nimmt dann den ersten Satz zu dem key und schreibt diesen mit dem key wieder raus. Alle weiteren Sätze werden ignoriert. In einem Vergleich wird nicht der MD5-Algorithmus verwendet, sondern der SHA-512

Ergebnis

Sätze insgesamtMD5SHA-512
88.333.921¹85.746.46485.746.464

Bewertung

Keine Hash-Kollisionen - MD5 ist ausreichend. 2.587.457 Sätze kommen 2- oder mehrfach vor.

Benchmark

Es wurden 17.021.733 Medline Abstracts bearbeitet. Diese lagen in einer Eingabedatei von 11,92 GB. Berechnet wurde auch einem Hadoop-Cluster aus 7 Maschinen der Entry-Server Klasse (4 GB RAM, Xeon Quad-Core, da Dual-Cores nicht lieferbar war :-), 500 GB Festplatte).

 MD5SHA-512
Dauer der Berechnung11 Minuten15 Minuten, 46 Sekunden
Reduce Output14,45 GB22,43 GB


[¹] Leicht modifizierter satzzerlege Algorithmus gegenüber den Ergebnissen vom 2008-02-02.