在Cassandra中根据日期时间查询列

我们正在尝试根据以下结构从CF创建/查询信息(例如日期时间,日期时间,整数)

e.g.
03-22-2012 10.00, 03-22-2012 10.30 100
03-22-2012 10.30, 03-22-2012 11.00 50
03-22-2012 11.00, 03-22-2012 11.30 200

如何在Cassandra中对上述结构进行建模,并通过Hector执行以下查询.

select * from <CF> where datetime1 > 03-22-2012 10.00 and datetime2 < 03-22-2012 10.30
select * from <CF> where datetime1 > 03-22-2012 10.00 and datetime2 < 03-22-2012 11.00
select * from <CF> where datetime = 03-22-2012 (i.e. for the entire day)

最佳答案 这是在Cassandra中使用日期和时间的一个很好的介绍:
Basic Time Series with Cassandra.

简而言之,使用时间戳(或v1 UUID)作为列名,并将比较器设置为LongType(或TimeUUIDType),以便按时间顺序排序列.然后很容易在两个时间点之间获得一片数据.

您的问题并不完全清楚,但如果您希望获得在给定时间范围内发生的所有事件而不考虑日期,那么您将需要以不同方式构建数据.在这种情况下,列名称可以是CompositeType(LongType,AsciiType),其中第一个组件是正常时间戳mod 86400(一天中的秒数),第二个组件是日期或其他随时间变化的内容,像一个完整的时间戳.你也想在这种情况下分解行,也许每小时都有一行不同的行.

点赞