Hadoop HDFS: Lesen Sie Sequenzdateien, die geschrieben werden

Ich benutze Hadoop 1.0.3.

Ich schreibe Protokolle in eine Hadoop-Sequenzdatei in HDFS, rufe nach jedem Protokollpaket syncFS () auf, schließe die Datei jedoch nie (es sei denn, ich führe ein tägliches Rolling durch).

Was ich garantieren möchte, ist, dass die Datei für Leser verfügbar ist, während die Datei noch geschrieben wird.

Ich kann die Bytes der Sequenzdatei über FSDataInputStream lesen, aber wenn ich versuche, SequenceFile.Reader.next (key, val) zu verwenden, gibt es beim ersten Aufruf false zurück.

Ich weiß, dass sich die Daten in der Datei befinden, da ich sie mit FSDataInputStream oder mit dem Befehl cat lesen kann und 100% sicher bin, dass syncFS () aufgerufen wird.

Ich habe die Namens- und Datenknotenprotokolle überprüft, ohne Fehler oder Warnung.

Warum kann SequenceFile.Reader meine aktuell geschriebene Datei nicht lesen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage