【问题标题】:How can I get a value of a countercolumn out of cassandra with hector?如何从带有赫克托的 cassandra 中获取反列的值?
【发布时间】:2011-12-19 14:00:27
【问题描述】:

您好,我正在尝试使用 hector 从 cassandra 获取数据。 有两种方法可以做到这一点。

一个是这样的 cqlQuery:

CqlQuery<String, String, Long> cqlQuery = new CqlQuery<String, String, Long>(connect.tutorialKeyspace, stringSerializer, stringSerializer, longSerializer);
    cqlQuery.setQuery("select home from page_view_counts where KEY ="localhost");

    QueryResult<CqlRows<String, String, Long>> result;
    try
    {
        result = cqlQuery.execute();
    }
    catch(HectorException e){
        result = null;
        message = e.getMessage();
    }

如果没有查询,它应该是这样的,但我无法让它工作:

SliceQuery<String, String, Long> query = HFactory.createSliceQuery(connect.tutorialKeyspace, stringSerializer,stringSerializer,longSerializer); 
    QueryResult<ColumnSlice<String, Long>> result2 = query.setColumnFamily("page_view_counts").setKey("localhost").setColumnNames("home").execute();

我在哪里犯错了?

【问题讨论】:

    标签: cassandra hector


    【解决方案1】:

    你的例子不完整,你没有说明什么是失败的。但是从你的代码来看,有一些问题是错误的:不正确的类型、参数,你需要使用特定的 Counter 类型,如果只是得到一个列,那么就不需要 Slice。这个例子应该可以工作:

    CounterQuery<String, String> query = HFactory.createCounterColumnQuery(keyspace, stringSerializer,stringSerializer);
    query.setColumnFamily("page_view_counts").setKey("localhost").setName("home");
    HCounterColumn<String> counter = query.execute().get();
    System.out.println("Count:" + counter.getValue());
    

    如果你确实需要一个 Slice,那么从 HFactory.createSliceCounterSliceQuery() 返回的结果将是

    QueryResult<CounterSlice<String>>
    

    其中将包含列表

    HCounterColumn<String>
    

    【讨论】:

    • 我的第一个例子执行得很好。第二个导致空指针错误。但现在它起作用了。我发现我很难找到关于赫克托的例子或好的文档。你知道一个好的网站吗?至少谢谢你。
    • hector-client.org,请参阅“文档”选项卡。 Javadocs(API 选项卡)很精简,但如果您从 HFactory 类开始,您可以浏览便捷方法以获取提示。
    【解决方案2】:

    使用 ColumnFamilyTemplate API 可能是轻松入门的最佳方式。请参阅:http://rantav.github.com/hector/build/html/content/getting_started.html(上面提到的部分或 hector-client.org)。

    【讨论】:

    • 谢谢,我会看看并尝试一下。
    • 好的,我试过了,但找不到更新/读取计数器列的方法。我也不明白 'ColumnFamilyTemplate' 与 'ColumnFamilyUpdater' 和普通的“Mutator”或“Slice/Range/Counter/Query”(等)之间的区别。这两种方法都一样快吗?
    猜你喜欢
    • 2013-03-17
    • 2013-10-28
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2012-02-01
    • 2013-02-23
    • 2012-11-21
    • 2013-07-10
    相关资源
    最近更新 更多