Neu bei Hadoop ...Ich habe eine Reihe von HDFS-Verzeichnissen mit der Namenskonvention filename.seq. Jedes Verzeichnis enthält eine Index-, Daten- und Bloom-Datei. Diese haben binären Inhalt und scheinen SequenceFiles zu sein (SEQ startet den Header). Ich möchte die Struktur / das Schema kennen. Alles, was ich lese, bezieht sich auf das Lesen einer einzelnen Sequenzdatei, sodass ich nicht sicher bin, wie ich diese lesen soll oder wie sie erstellt wurden. Danke.
Update: Ich habe empfohlene Tools zum Streamen und Ausgeben von Text in den Dateien ausprobiert, keines hat funktioniert:
hadoop fs -text /path/to/hdfs-filename.seq/data | head
hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.1.2.jar
-input /path/to/hdfs-filename.seq/data
-output /tmp/outputfile
-mapper "/bin/cat"
-reducer "/bin/wc -l"
-inputformat SequenceFileAsTextInputFormat
Fehler war:
ERROR streaming.StreamJob: Job not successful. Error: NA
Antworten:
1 für die Antwort № 1Der SEQ-Header bestätigt diese Hadoop-Sequenzdatei. (Eine Sache, die ich noch nie gesehen habe, ist die von Ihnen erwähnte Bloom-Datei.)
Die Struktur / das Schema einer typischen Sequenzdatei ist:
- Header (Version, Schlüsselklasse, Wertklasse, Komprimierung, Komprimierungscode, Metadaten)
- Aufzeichnung
- Aufzeichnungslänge
- Schlüssellänge
- Schlüsselwert
- Ein Sync-Marker alle paar 100 Bytes oder so.
Für mehr Details:
- siehe die Beschreibung Hier.
- Sequence File Reader und Wie lese ich eine sequentielle Hadoop-Datei?