Cassandra按日期查询

时间:2015-07-24 20:40:02

标签: cassandra cql

如何根据Casandra中更大或更小的日期更新列?

示例:

update asset_by_file_path set received = true where file_path = '/file/path' and time_received = '2015-07-24 02:14:34-0600';

这很好用。但我想对匹配此文件路径的所有列执行此操作,time_received大于2015-07-24 02:14:34-0600

time_received是日期,群集列。 file_path是字符串,分区键

2 个答案:

答案 0 :(得分:1)

我认为UPDATE一次只能修改一行,所以我没有看到在CQL中更新服务器端多行的方法。

一些可能的程序化方法:

  1. 执行范围查询以返回要更新的所有行,然后在客户端更新返回的每一行。由于它们都适用于同一个分区,因此您可以将更新作为批处理语句发出。

  2. 如果您有Spark可用,则可以使用范围查询读取要更新到RDD的所有行。然后在RDD上进行转换,将接收到的值设置为true,然后将RDD保存回Cassandra。

答案 1 :(得分:0)

Cassandra的WHERE子句有很多限制,如果你有几个聚类列,事情就会无法正常工作,至少对>,> =,<,< = etc运算符有限制。这是来自Databrix的关于​​WHERE子句细微差别的一个非常新鲜的blog post,它还包括一些即将推出的功能。