Wie verwendet Pig Hadoop Globs in einer 'load' Anweisung?

8

Wie ich bereits erwähnt , geht es mit leeren (0-Byte) Dateien nicht gut. Leider gibt es viele Möglichkeiten, wie diese Dateien erstellt werden können (auch in Hadoop Utilities ).

Ich dachte, dass ich dieses Problem umgehen könnte, indem ich explizit nur Dateien lade, die einer bestimmten Namenskonvention in LOAD-Anweisung mit Hadoops Globensyntax . Leider scheint dies nicht zu funktionieren, da selbst wenn ich einen Glob zum Filtern von bekannten Eingabedateien verwende, ich immer noch den 0-Byte-Fehler früher erwähnt .

Hier ist ein Beispiel: Angenommen, ich habe die folgenden Dateien in S3:

  • mybucket / a / b / (0 Byte)
  • mybucket / a / b / myfile.log (& gt; 0 Bytes)
  • mybucket / a / b / yourfile.log (& gt; 0 Byte)

Wenn ich eine LOAD-Anweisung in meinem Schweine-Skript verwende:

%Vor%

Ich würde erwarten, dass Pig die 0-Byte-Datei nicht erstickt, aber es tut es immer noch. Gibt es einen Trick, um Pig dazu zu bringen, nur Dateien anzusehen, die dem erwarteten Glob-Muster entsprechen?

    
Chris Phillips 21.04.2011, 23:05
quelle

1 Antwort

3

Dies ist eine ziemlich hässliche Lösung, aber Globs, die nicht auf die * Wildcard-Syntax angewiesen sind, scheinen zu funktionieren. In unserem Workflow (vor dem Aufruf unseres Pig-Scripts) listen wir alle Dateien unterhalb des Präfixes auf, das uns interessiert, und erstellen dann einen bestimmten Glob, der nur aus den Pfaden besteht, an denen wir interessiert sind.

Im Beispiel oben listen wir beispielsweise "mybucket / a" auf:

%Vor%

Gibt eine Liste mit Dateien und anderen Metadaten zurück. Wir können dann aus diesen Daten den Glob erstellen:

%Vor%

Dies erfordert ein bisschen mehr Front-End-Arbeit, erlaubt uns aber, gezielt auf uns interessierende Dateien zu zielen und 0-Byte-Dateien zu vermeiden.

Update: Leider habe ich festgestellt, dass diese Lösung fehlschlägt, wenn das Glob-Muster lang wird; Pig wirft eine Ausnahme ab: "Eingabebereich kann nicht erstellt werden".

    
Chris Phillips 22.04.2011, 15:17
quelle

Tags und Links