您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Hector在Cassandra中查询CompositeType列

使用Hector在Cassandra中查询CompositeType列

好的起点教程在这里

但是,在最终需要使用复合组件并尝试针对数据编写查询之后,我想出了一些我想共享的东西。

因此,假设由3个字符串组成,我的列如下所示:

A:A:A
A:B:B
A:B:C
A:C:B
B:A:A
B:B:A
B:B:B
C:A:B

对于从A:A:A到B:B:B的搜索,结果将是

A:A:A
A:B:B
A:B:C
A:C:B
B:A:A
B:B:A
B:B:B

注意“ C”组件吗?开始/结束词中没有“ C”组件!是什么赋予了?这些都是A:A:A和B:B:B列之间的所有结果。 Composite搜索项 像处理嵌套循环那样提供结果(这是我最初的想法),而是 由于对列进行了排序,因此您要为连续的column块指定开始项和结束项

仅最后一项应为GREATER_THAN_EQUAL,其他所有则应为EQUAL。例如以上

Composite start = new Composite();
start.addComponent(0, "A", Composite.ComponentEquality.EQUAL);
start.addComponent(1, "A", Composite.ComponentEquality.EQUAL);
start.addComponent(2, "A", Composite.ComponentEquality.EQUAL);

Composite end = new Composite();
end.addComponent(0, "B", Composite.ComponentEquality.EQUAL);
end.addComponent(1, "B", Composite.ComponentEquality.EQUAL);
end.addComponent(2, "B", Composite.ComponentEquality.GREATER_THAN_EQUAL);

SliceQuery<String, Composite, String> sliceQuery = HFactory.createSliceQuery(keyspace, se, ce, se);
sliceQuery.setColumnFamily("CF").setKey(myKey);
ColumnSliceIterator<String, Composite, String> csIterator = new ColumnSliceIterator<String, Composite, String>(sliceQuery, start, end, false);

while (csIterator.hasNext()) ....
其他 2022/1/1 18:14:57 有571人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶