Wir verbrauchen sehr große Datenmengen, die so schnell wie möglich geschrieben werden müssen, und wir verwenden HDFS, daher bevorzugen wir es, es zu verwenden. Die Daten sind fast unstrukturiert, und wir werden selten grundlegende Abfragen an ihnen vornehmen. Die Daten sind flach mit einigen Feldern, wobei jede Zeile andere Daten darstellt.Datenspeicherformat für unstrukturierte Datenzeilen auf HDFS
key1=str key2=30.3 key3=longtexthere
Eine weitere Datenreihe:
key1=3 key5=abc
SequenceFile schien die natürlichste, aber ich konnte nicht finden, wie in einem einzigen SequenceFile mehr Zeilen zu speichern.
Gegenwärtig haben wir in unserer temporären Lösung mehrere Writer, die in mehrere Textdateien schreiben. Wenn also Abfragen benötigt werden, lesen wir sie parallel. Die aktuellen Textdateien enthalten jedoch 1000 Zeilen, und ich denke nicht, dass das Erstellen einer einzelnen SequenceFile für jede Zeile machbar wäre. Es würde viel Aufwand für das Speichern von Metadaten und das Lesen von viel zu vielen Dateien auf einmal verursachen.
Ich denke, das Problem kann mit HBase oder Cassandra, einer Kolumunar-Datenbank gelöst werden, aber wir müssen fast HDFS verwenden. Fehle ich etwas mit SequenceFiles oder sollten wir wirklich eine Columunar-Datenbank verwenden?
Haben Sie eine feste Anzahl von Schlüsseln/Spalten? – oae
@oae Nein, obwohl sie nicht behoben sind, werden sie selten erweitert, dh manchmal fügen wir neue Spalten hinzu, aber die alten Daten haben sie nicht. – Mustafa