我是cassandra和hector的新手.
我想使用hector检索Cassandra中一行的所有列.在网上进行一些探索之后,我得到了一些示例代码,但它需要范围或列名,例如,
SliceQuery<String,String,String> query = HFactory.createSliceQuery(keyspace, ss, ss, ss);
query.setColumnFamily("MyColumnFamily").setKey("S001").setRange(null, null, false, 100);
QueryResult<ColumnSlice<String,String>> result = query.execute();
for (HColumn<String, String> column : result.get().getColumns()) {
System.out.println(column.getName() +"::"+ column.getValue());
}
Run Code Online (Sandbox Code Playgroud)
这里我需要在setRange()方法中设置Range,它检索此范围内的列.我们也可以在这个方法中设置start和end,但是这也会给出特定范围的列.如果我没有设置范围,那么我需要将列名称作为数组.
有没有办法获得特定行的所有列?我不想设置范围或列名,我只想要一行的所有列.因为在我的应用程序列中没有预定义.
或者有没有办法获得一行的总列数,所以我可以在setRange()方法中设置它?
谢谢.
nic*_*ley 10
对于稍微小的行执行此操作的方法是使用setRange()方法完全如何在您粘贴的示例中使用它.如果将范围的开始和结束参数设置为null,则要从中获取的范围是整行.
在这一点上你唯一需要考虑的是限制.在您粘贴的示例中,限制设置为100,因此查询不会返回超过100列.如果要始终检索一行中的所有列,可以将限制设置为一个非常大的数字(大于可能的列数),但这通常不是一个好主意.
相反,您可能希望为范围查询创建一个Hector ColumnSliceIterator,它将为您提供行的迭代器接口,并允许您遍历整个行而无需一次查询太多列.请参阅本页底部"Column Iteration"下的示例:
https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29
| 归档时间: |
|
| 查看次数: |
7771 次 |
| 最近记录: |