3

Hadoopに保存する必要のあるコレクションフィールドを持つ複雑なオブジェクトがあります。オブジェクトツリー全体を調べて、各フィールドを明示的に格納したくありません。だから私は複雑なフィールドのシリアル化について考え、それを1つの大きなピースとして保存します。そして、オブジェクトを読み取るときにそれをdesirializeするよりも。それで、それを行うための最良の方法は何ですか?そのために何らかのセリゼーションを使用することについては考えていますが、Hadoopがこの状況に対処する手段を持っていることを願っています。

保存するサンプルオブジェクトのクラス:

class ComplexClass {

<simple fields>

List<AnotherComplexClassWithCollectionFields> collection;


}
4

1 に答える 1

6

HBaseはバイト配列のみを処理するため、適切と思われる方法でオブジェクトをシリアル化できます。

オブジェクトをシリアル化する標準のHadoopの方法は、org.apache.hadoop.io.Writableインターフェースを実装することです。次に、を使用してオブジェクトをバイト配列にシリアル化できますorg.apache.hadoop.io.WritableUtils.toByteArray(Writable ... writable)

また、Avro、Protocol Buffers、Thriftなど、Hadoopコミュニティの人々が使用する他のシリアル化フレームワークがあります。すべてに特定のユースケースがあるので、調査を行ってください。簡単なことをしている場合は、HadoopのWritableを実装するだけで十分です。

于 2010-11-03T13:05:04.710 に答える