Cassandra 使用Thrift API操作数据, 读写多行(range区间)多列(slice切片)数据

这次记录的主要是取出多行, slices 值得是列切片, 

取出多行用的是client.get_range_slices 具体代码如下

        	Connector conn = new Connector();
		Cassandra.Client client = conn.connect("Keyspace1");

		SlicePredicate predicate = new SlicePredicate();
		List<ByteBuffer> colNames = new ArrayList<ByteBuffer>();
		colNames.add(UsefulUtils.toByteBuffer("a"));
		colNames.add(UsefulUtils.toByteBuffer("b"));

		predicate.column_names = colNames;
		//我们只区ab 两列值,可以看出来,前面基本差不多
		ColumnParent parent = new ColumnParent("Standard1");

		KeyRange keyRange = new KeyRange();//定义一个行键值区间,这里是主要区别
		keyRange.start_key = UsefulUtils.toByteBuffer("k1");
		keyRange.end_key = UsefulUtils.toByteBuffer("k2");
		//跟列一样,键值也是有顺序存储在硬盘/内存 中的,所以说,要指定一个开始键值,结束键值,你就会得到一串连续的键值
		// get a group keyslice
		List<KeySlice> results = client.get_range_slices(parent, predicate,
				keyRange, CL);
		//然后调用get_range_slices, 可以得到包含很多结果keyslice 的LIST
		


得到这个list之后,就可以遍历这个list 按照不同的键值,取出对应的columns, 以前我们取出的都是一行,只有一个key

这次我们取了好几行,每行只有a, b 两列/ 当然,你也可以结合取出一个slice的列


		for (KeySlice keySlice : results) {
			List<ColumnOrSuperColumn> cosc = keySlice.getColumns();
			System.out.println("Current row:" + new String(keySlice.getKey()));

			for(ColumnOrSuperColumn cc: cosc){
				Column c=cc.getColumn();
				UsefulUtils.formatKeyValueOutPut(c.name, c.value);
			}

上面是遍历语法



这篇文章记录了 用Keyrange 指定一组rowkey来得到多行数据




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值