2016-04-01 8 views
0

Ich bin in einer großen Verwirrung mit den folgenden zwei Aussagen. 1) Wo genau LOAD-Anweisung speichert diese Beziehung (Student), ist es auf hdfs/PIG internen Speicher/lokale Maschine?wo genau PIG seine Beziehungen speichert

example : student = LOAD 'HDFS:/student' using PigStorage(','); 

2) wenn ich versuche, Student zu entleeren; dann dauert es fast 30-40 Sekunden, um das Ergebnis anzuzeigen, wo die LOAD-Anweisung 1-2 Sekunden dauert .... wenn wir versuchen, Daten aus dem internen Speicher des Schweins abzurufen, warum ist dann diese Verzögerung?

wäre dankbar, wenn jemand diese Zweifel klären kann (vorzugsweise der Ablauf der Ausführung). danke in adv.

mein env: Ich benutze VM für Lernzwecke.

Antwort

1

Die LOAD die Daten nicht speichern, aber es ist nur ein Zeiger auf die Datei. Wenn LOAD Anweisung ausgeführt wird, wird keine MapReduce Aufgabe ausgeführt.

Es ist nur nach der DUMP oder STORE Anweisung, dass ein MapReduce Job initiiert wird. Wir sehen unsere Daten in der Ausgabe und wir können bestätigen, dass die Daten erfolgreich geladen wurden.

DUMP einige Zeit dauern, da es mehrere Abfrage-Ausführung und und verlangsamt die Ausführung deaktiviert. (Wenn Sie für Debugging-Zwecke DUMP Anweisungen in Ihre Skripte eingefügt haben, sollten Sie sie entfernen.)

Wenn Sie Daten speichern möchten, können Sie den Befehl STORE verwenden.

+0

vielen Dank für die Antwort. mit Zeiger auf die Datei, du meinst Daten noch auf HDFS ?? und LOAD Befehl erstellt eine Instanz dieser Datei in Grunt Shell ?? – user1708054

+0

ja .. die Daten werden im HDFS gespeichert, wenn Sie den Pig im Mapreduce-Modus und lokal im lokalen Modus ausführen –

+1

Solange es keine Dump- oder Store-Anweisung gibt, wird nichts ausgeführt. Nur wenn ein Speicher oder Dump angefordert wird, generiert Pig einen Ausführungsplan (Map-Reduce-Job) und führt ihn aus. – LiMuBei