Frage

Ich habe komplexe Objekte mit Sammelfeldern, die zu Hadoop werden müssen gespeichert. Ich will nicht durch die ganzen Objektbaum gehen und explizit jedes Feld zu speichern. Deshalb denke ich, nur über die Serialisierung von komplexen Feldern und speichern Sie es als ein großes Stück. Und als es desirialize, wenn das Objekt zu lesen. Also, was ist der beste Weg, es zu tun? Ich dachte über eine Art serilization dafür verwenden, aber ich hoffe, dass Hadoop Mittel hat mit dieser Situation zu umgehen.

Probenobjektklasse zu speichern:

class ComplexClass {

<simple fields>

List<AnotherComplexClassWithCollectionFields> collection;


}
War es hilfreich?

Lösung

HBase befasst sich nur mit Byte-Arrays, so dass Sie Ihr Objekt in irgendeiner Weise serialisiert können Sie sehen, passen.

Der Standard-Hadoop Weg, um Objekte von Serialisierung ist die org.apache.hadoop.io.Writable Schnittstelle zu implementieren. Dann können Sie Ihr Objekt in ein Byte-Array mit org.apache.hadoop.io.WritableUtils.toByteArray(Writable ... writable) serialisiert werden.

Auch gibt es andere Serialisierung Rahmen, dass die Menschen in der Hadoop-Community nutzen, wie Avro, Protocol Buffers und Thrift. Alle haben ihre spezifischen Anwendungsfälle, so tun Sie Ihre Forschung. Wenn Sie etwas einfach tun, die Umsetzung Hadoop des beschreibbar sollte gut genug sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top