我正在做一些 POC。
我有存储服务器事件的列族。为了避免行过大,我们在行键中使用复合类型将每一行拆分为另外 N 行:
CREATE COLUMN FAMILY logs with comparator='ReversedType(TimeUUIDType)' and key_validation_class='CompositeType(UTF8Type,IntegerType)' and default_validation_class=UTF8Type;
所以对于每个服务器名称,我们有 N 行,我们使用非常简单的循环算法将数据写入每一行。
将数据写入任何行都没有问题:
Mutator<Composite> mutator = HFactory.createMutator(keySpace, CompositeSerializer.get());
HColumn<UUID,String> col =
HFactory.createColumn( TimeUUIDUtils.getUniqueTimeUUIDinMillis(), log);
Composite rowName = new Composite();
rowName.addComponent(serverName, StringSerializer.get());
rowName.addComponent(this.roundRobinDestributor.getRow(), IntegerSerializer.get());
mutator.insert(rowName, columnFamilyName, col);
}
到目前为止一切顺利,但现在我有两个问题:
1)由于如果我想获取某些 serverName 的所有日志,我会扫描行键,我应该使用ByteOrderedPartitioner
吗?
2) 任何人都可以帮助我,或者告诉我一些帮助如何创建 Hector 查询,它将为 server1 带来所有行({server1:0}、{server1:1} {server1:2) 等...)?我看到了很多使用 CompositeType 作为比较器的示例,但没有使用密钥验证器的示例。
非常感谢任何帮助或评论。