Как хранить сложные объекты в hadoop Hbase? - PullRequest
3 голосов
/ 03 ноября 2010

У меня есть сложные объекты с полями коллекции, которые нужно было сохранить в Hadoop.Я не хочу проходить через все дерево объектов и явно хранить каждое поле.Поэтому я просто думаю о сериализации сложных полей и храню их как один большой кусок.И чем десириализовать его при чтении объекта.Так каков наилучший способ сделать это?Я думал об использовании некоторой некоторой серилизации для этого, но я надеюсь, что Hadoop имеет средства для обработки этой ситуации.

Пример класса объекта для хранения:

class ComplexClass {

<simple fields>

List<AnotherComplexClassWithCollectionFields> collection;


}

1 Ответ

5 голосов
/ 03 ноября 2010

HBase имеет дело только с байтовыми массивами, так что вы можете сериализовать ваш объект любым удобным для вас способом.

Стандартным способом сериализации объектов в Hadoop является реализация интерфейса org.apache.hadoop.io.Writable.Затем вы можете сериализовать свой объект в байтовый массив, используя org.apache.hadoop.io.WritableUtils.toByteArray(Writable ... writable).

. Кроме того, существуют другие среды сериализации, которые используют люди в сообществе Hadoop, например Avro, Protocol Buffers и Thrift.Все они имеют свои конкретные случаи использования, так же как и ваши исследования.Если вы делаете что-то простое, реализация Hadoop Writable должна быть достаточно хорошей.

...