【问题标题】:Retrieve all Columns of a row in Cassandra using Hector Client使用 Hector 客户端检索 Cassandra 中一行的所有列
【发布时间】:2012-04-23 19:03:18
【问题描述】:

我是 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());
    }

这里我需要在 setRange() 方法中设置 Range,该方法检索此范围内的列。我们也可以在这个方法中设置开始和结束,但这也会给出特定范围的列。如果我没有设置范围,那么我需要将列名作为数组提供。

有没有办法获取特定行的所有列? 我不想设置范围或列名,我只想要一行的所有列。因为在我的应用程序列中没有预定义。

或者有什么方法可以获取一行的总列数,以便我可以在 setRange() 方法中设置它?

谢谢。

【问题讨论】:

    标签: cassandra hector


    【解决方案1】:

    对较小的行执行此操作的方法是使用 setRange() 方法,这与您粘贴的示例中的使用方式完全相同。如果将范围的开始和结束参数设置为 null,则要从中获取的范围是整行。

    此时您唯一需要考虑的是限制。在您粘贴的示例中,限制设置为 100,因此查询不会返回超过 100 列。如果您希望始终检索一行中的所有列,则可以将限制设置为一个非常大的数字(大于您可能拥有的列数),但这通常不是一个好主意.

    相反,您可能想要为范围查询创建一个 hector ColumnSliceIterator,它会为您提供行的迭代器接口,并允许您遍历整个行而无需一次查询太多列。请参阅本页底部“列迭代”下的示例:

    https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 2012-01-15
      • 2011-11-15
      • 2012-03-12
      • 1970-01-01
      • 2012-05-05
      • 2013-10-22
      • 2012-12-07
      • 2012-03-12
      相关资源
      最近更新 更多