Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Aufgabe 2 - Schnittmengenbildung -. 4. Juni 2003Übung Data Warehousing2 Problem Vergleich zweier Listen (von Tupeln) auf Duplikate Bildung der Schnittmenge.

Ähnliche Präsentationen


Präsentation zum Thema: "Aufgabe 2 - Schnittmengenbildung -. 4. Juni 2003Übung Data Warehousing2 Problem Vergleich zweier Listen (von Tupeln) auf Duplikate Bildung der Schnittmenge."—  Präsentation transkript:

1 Aufgabe 2 - Schnittmengenbildung -

2 4. Juni 2003Übung Data Warehousing2 Problem Vergleich zweier Listen (von Tupeln) auf Duplikate Bildung der Schnittmenge Listen jeweils deutlich größer als Hauptspeicher Anwendung: ETL Berechnung differentieller Snapshots

3 4. Juni 2003Übung Data Warehousing3 Lösungen Naiv –Nested Loop Besser –Sort Merge Join Noch besser ? –Partition Hash Join

4 4. Juni 2003Übung Data Warehousing4 HashJoin Trick: es werden nicht mehr alle Tupel miteinander verglichen Vergleich findet statt zwischen Tupeln mit dem gleichen HashCode Dazu kann über ein beliebiges Attribut gehashed werden (meist: ID) bei uns gibt es ohnehin nur ein Attribut Hashfunktion für Zahlenwert

5 4. Juni 2003Übung Data Warehousing5 HashJoin: Schritt 1 Value1 Value2 Value3 Value4 Value5 Value6 Value7 Value8 Value1 Value4 Value8 Value5 Value6 Value9 Value3 Value7 Bucket 1 Bucket 2 Bucket 3 Bucket 4 Bucket 5 Bucket 6 Bucket 1 Bucket 2 Bucket 3 Bucket 4 Bucket 5 Bucket 6

6 4. Juni 2003Übung Data Warehousing6 HashJoin: Schritt 2 Bucket 1 Bucket 2 Bucket 3 Bucket 4 Bucket 5 Bucket 6 Bucket 1 Bucket 2 Bucket 3 Bucket 4 Bucket 5 Bucket 6 Vergleich der Elemente mittels neuer Hashfunktion

7 4. Juni 2003Übung Data Warehousing7 Vorgehensweise Im konkreten Fall: Beschränkung des Hauptspeichers Zwischenspeicherung der Buckets (1..n, 1..n) als Dateien Laden von zwei korrespondierenden Buckets (i, i) Vergleich der Elemente

8 4. Juni 2003Übung Data Warehousing8 Zu beachten Die erste Hashfunktion sollte die Tupel gleichmäßig auf die Buckets verteilen modulo Primzahl Es sollten beim ersten Schritt nicht zu viele Buckets entstehen, da jeweils ein Filehandle nötig ist Bei zu wenigen Buckets enthält aber jedes zu viele Daten für den späteren Vergleich im Hauptspeicher

9 4. Juni 2003Übung Data Warehousing9 Zeitaspekt Bezüglich der benötigten Zeit für die Berechnung lohnt es sich, vieles selber zu programmieren –Java bietet die Klasse util.Hashtable, die aber langsamer ist als ein eigener Array- Hash –Benutzung einer eigenen Hash-Funktion, und nicht des JAVA Standards –Besondere Beachtung auf den IO Funktionen, da hier die Hauptlast entsteht

10 4. Juni 2003Übung Data Warehousing10 Lösung von Aufgabe 2 Es existieren Duplikate z.B. 2x 97 Buckets, je ca. 1MB mit HashJoin etwa 2:30 Minuten sort –n data1 data2 | uniq –d auf der Konsole dauert ca. 5 Minuten

11 4. Juni 2003Übung Data Warehousing11 Algorithmus: Sort-Merge...

12 4. Juni 2003Übung Data Warehousing12 Vergleich Hash-Join versus Sort-Merge Join –Sei |F|/HS = X (Anz. Buckets) –HJ braucht für das Hashen X+1 Files für das Mergen 2 Files Schreibt beim Hashen ungeordnet –SM braucht für das Sortieren 1+1 Files Für das Mergen 2*X Files Liest beim Mergen ungeordnet

13 4. Juni 2003Übung Data Warehousing13 Anhang: Hashfunktion int[] hash = new int[hashgroesse]; int linearHashing (int key) { // den Hashcode bestimmen code = (key / primzahl) % hashgroesse; // ist der Hash an dieser Stelle schon belegt? while (hash[code] != 0) { // dann um einen Platz weiterrücken code++; // aber bitte im Array bleiben code = code % hashgroesse; } // Hash belegen und Code zurückgeben hash[code] = code; return code; }


Herunterladen ppt "Aufgabe 2 - Schnittmengenbildung -. 4. Juni 2003Übung Data Warehousing2 Problem Vergleich zweier Listen (von Tupeln) auf Duplikate Bildung der Schnittmenge."

Ähnliche Präsentationen


Google-Anzeigen