所以情况如下:我创建了一个 SetWritable 类,基本上是实现 Writable 接口的 java.util.Set 的包装器。我有一个包含一列族和一列的 HBase 表,并且该列的值是序列化的 SetWritable 对象。现在,如果我想向集合中添加一个元素,我需要从 HBase 中提取行,将其反序列化为 SetWritable,添加我的元素,序列化 SetWritable,然后将其推回 HBase。所以这意味着我的映射器和 HBase 之间有很多很多的通信。鉴于我正在处理大量数据,这可能会影响我的表现。
我想做的只是将新元素发送到 HBase,并在 HBase 服务器上有一些代码反序列化 SetWritable,添加元素,序列化 SetWritable,然后提交它。这可能吗?协处理器可以提供帮助吗?
另一个想法:不是将我的集合序列化为一列,我可以为集合的每个已知元素设置一列。一个缺点:我可能会得到数十万(或数百万)列。这是一个问题吗?