如何根据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是字符串,分区键
答案 0 :(得分:1)
我认为UPDATE一次只能修改一行,所以我没有看到在CQL中更新服务器端多行的方法。
一些可能的程序化方法:
执行范围查询以返回要更新的所有行,然后在客户端更新返回的每一行。由于它们都适用于同一个分区,因此您可以将更新作为批处理语句发出。
如果您有Spark可用,则可以使用范围查询读取要更新到RDD的所有行。然后在RDD上进行转换,将接收到的值设置为true,然后将RDD保存回Cassandra。
答案 1 :(得分:0)
Cassandra的WHERE子句有很多限制,如果你有几个聚类列,事情就会无法正常工作,至少对>,> =,<,< = etc运算符有限制。这是来自Databrix的关于WHERE子句细微差别的一个非常新鲜的blog post,它还包括一些即将推出的功能。