【问题标题】:Getting Cassandra column timestamp using hector使用 hector 获取 Cassandra 列时间戳
【发布时间】:2013-08-02 14:09:10
【问题描述】:

我正在使用 Hector 从 Cassandra DB 读取数据。 查询示例:

ColumnQuery<String, String, String> cq = HFactory.createColumnQuery(KEYSPACE, stringSerializer, stringSerializer, stringSerializer);
cq.setColumnFamily(columnFamily).setKey("Some_Key").setName("Column_Name");
QueryResult<HColumn<String, String>> cqRes = cq.execute();

我得到的答案(此列的值)如下所示:

[45404,2]

据我所知,A Column 由名称、值和时间戳组成(例如提到的here)。 我不是在写这个数据库,我只是从中读取。有没有可能根本没有写数据戳?无论如何,有没有一种特殊的方法可以使用 Hector 来汇集它(时间戳)?

【问题讨论】:

    标签: cassandra hector


    【解决方案1】:

    您可以使用列的getClock() 方法来获取时间戳。每列在 Cassandra 中都有一个时间戳。 (对于计数器来说,它更复杂,并且它们不会暴露给客户端。)

    但是,时间戳用于解决冲突,以查看哪个写入获胜。它不应被视为日期字段。如果您想为记录添加日期,请添加单独的日期列。然后,您可以控制分辨率、时区等,它可以引用整行而不是单个列。

    【讨论】:

    • 谢谢理查德。我确实已经注意到 HColumn 类有一个 getClock() 方法,但是如何获取这个类的实例呢?返回的对象没有这个方法。
    • HColumn&lt;String, String&gt; col = cqRes.get();
    • 周日我会回到我的笔记本电脑上试一试。看起来不错 :) 谢谢。
    • 另外,值得一提的是,在使用 hector 时,您应该将时间戳除以 1000(因为 hector 使用 public long createClock() { return getSystemMilliseconds() * ONE_THOUSAND; } 保存时)。
    猜你喜欢
    • 2011-11-03
    • 2013-11-01
    • 2015-02-14
    • 2013-11-04
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2017-04-30
    • 2013-11-09
    相关资源
    最近更新 更多