2010-11-03 6 views
3

J'ai des objets complexes avec des champs de collection qui devaient être stockés dans Hadoop. Je ne veux pas parcourir l'arborescence entière des objets et stocker explicitement chaque champ. Donc, je pense juste à la sérialisation des champs complexes et les stocker comme une grande pièce. Et que désirialisez-le en lisant l'objet. Alors, quelle est la meilleure façon de le faire? Je pensais à utiliser une sérilisation pour cela, mais j'espère que Hadoop a les moyens de gérer cette situation.Comment stocker des objets complexes dans hadoop Hbase?

classe de l'objet de l'échantillon pour stocker:

class ComplexClass { 

<simple fields> 

List<AnotherComplexClassWithCollectionFields> collection; 


} 

Répondre

5

HBase ne traite que des tableaux d'octets, de sorte que vous pouvez sérialiser votre objet de quelque manière que bon vous semble.

La méthode Hadoop standard de sérialisation d'objets consiste à implémenter l'interface org.apache.hadoop.io.Writable. Ensuite, vous pouvez sérialiser votre objet dans un tableau d'octets en utilisant org.apache.hadoop.io.WritableUtils.toByteArray(Writable ... writable).

De même, d'autres frameworks de sérialisation sont utilisés par les utilisateurs de la communauté Hadoop, tels que Avro, Protocol Buffers et Thrift. Tous ont leurs cas d'utilisation spécifiques, alors faites votre recherche. Si vous faites quelque chose de simple, l'implémentation de Hadoop's Writable devrait suffire.

+0

Merci. Comment convertir un tableau d'octets dans l'objet original (Writable), à ​​quoi ressemblerait la désérialisation? De préférence en utilisant la méthode de serde de Hadoop. –

+0

@ bajafresh4life: Pouvez-vous s'il vous plaît m'aider sur celui-ci. Je suis vraiment nouveau à HBase et guide moi avec des étapes faciles. Merci YOu http://stackoverflow.com/questions/24236547/how-to-store-primitive-datatypes-strings-in-a-hbase-column-and-retrieve-them-u –

Questions connexes