2016-05-11 7 views
1

Ich habe einen großen Datensatz, aufgeteilt in viele 200 GB Chunks.PIG: Wie kann man einen großen Datensatz effizient laden und filtern?

Im Moment habe ich Schwierigkeiten, die Daten mit Pig zu knacken. Tatsächlich ist mein Cluster ziemlich klein (4 Knoten). Ich denke, ein möglicher Engpass ist, wenn ich die Daten lade, weil ich nur einen Bruchteil der 2 TB Daten brauche, die ich habe.

Insbesondere I wurde gefragt, ob

einen gesamten Datensatz geladen wird, und dann Filtrieren

A = load ‘data_part*’ as (x, y); 
A = FILTER A by x>0 

ist weniger effizient als

jeden Chunk Laden filtern jeden Chunk und hängen alles zusammen

A1 = load ‘data_part1’ as (x, y); 
A1 = FILTER A1 by x>0 

A2 = load ‘data_part2’ as (x, y); 
A2 = FILTER A2 by x>0 

A = UNION A1, A2; 

Wenn das der Fall ist, warum?

Ich finde keinen Hinweis in der Dokumentation. Ich kann das jetzt auch nicht direkt mit meinen Daten versuchen. Wenn hier jemand helfen kann, wäre das toll!

Vielen Dank!

Antwort

1

Ich würde sagen, beide würden das gleiche durchführen. Ein Map Reduce-Job wird nur initiiert, wenn Sie einen Store oder Dump haben. Sie sollten wahrscheinlich in where exactly PIG stores its relations

suchen
1

Wenn die gefilterten Daten klein sind, würde die Anwendung Filter früh die Leistung nicht verbessern.Eine der besten Praxis ist es, früh und oft zu filtern. Sehen Sie hier für die Verbesserung der Leistung durch Anwendung von Filtern FILTER EARLY AND OFTEN

+0

hallo danke! Entschuldigung, aber ich verstehe nicht. sagen die vollen Daten sind 2T, und nach dem Filter ist nur 20GB. Warum stirbt mein Cluster? Wird PiG die unbenutzten Daten nicht löschen? –

1

Ich denke, die zweite wird effizienter sein.

Während des logischen Aufbaus des Programms überprüft PIG alle Anweisungen. Wenn der Befehl dump oder store angezeigt wird, starte ich das map-reduce-Programm. Jetzt im zweiten Szenario haben Sie 2 Filteranweisungen gegeben. Es bedeutet, dass es 2 Reduzierstücke gibt. Es kann also effizienter sein, wenn die Anzahl der Mappers und Reducers auf den Standardwert eingestellt ist.

Ich bin nicht sehr sicher über meine Antwort.Please lassen Sie mich wissen, wenn Sie etwas Neues gefunden.