2009-07-09 10 views
3

Ich möchte eine große Anzahl von Dateien in Hadoop verarbeiten - jede Datei enthält einige Header-Informationen, gefolgt von vielen Datensätzen, die jeweils in einer festen Anzahl von Bytes gespeichert sind. Irgendwelche Vorschläge dazu?Verarbeitung von Dateien mit Kopfzeilen in Hadoop

Antwort

4

Ich denke, die beste Lösung ist eine benutzerdefinierte InputFormat schreiben.

0

Zusätzlich zu einem benutzerdefinierten FileInputFormat müssen Sie auch sicherstellen, dass die Datei nicht splitfähig ist, damit der Leser weiß, wie die Datensätze in der Datei verarbeitet werden.

1

Es gibt eine Lösung, Sie können den Offset der Zeile der Dateien überprüfen, die der Mapper liest. Es wird Null für die erste Zeile in der Datei sein. so können Sie Linie in der Karte wie folgt hinzufügen:

public void Karte (LongWritable Schlüssel, Text Wert, Kontext Context) throws IOException, InterruptedException {

 if(key.get() > 0) 
         { 
         your mapper code 
         } 
       } 

So wird es die erste Zeile der überspringen Datei.

Es ist jedoch kein guter Weg, weil auf diese Weise diese Bedingung für jede Zeile in der Datei überprüft wird.

Am besten verwenden Sie Ihr benutzerdefiniertes Eingabeformat

Verwandte Themen