3

我有需要存储到 Hadoop 的带有集合字段的复杂对象。我不想遍历整个对象树并明确存储每个字段。所以我只考虑复杂字段的序列化并将其存储为一大块。而不是在阅读对象时对其进行反序列化。那么最好的方法是什么?我虽然想为此使用某种序列化,但我希望 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)

此外,Hadoop 社区中的人们还使用其他序列化框架,例如 Avro、Protocol Buffers 和 Thrift。所有这些都有其特定的用例,因此请进行研究。如果您正在做一些简单的事情,那么实现 Hadoop 的 Writable 应该就足够了。

于 2010-11-03T13:05:04.710 回答