按日期的Cassandra查询

按日期的Cassandra查询,cassandra,cql,Cassandra,Cql,如何根据卡桑德拉中大于或小于的日期更新列 例如: updateasset_by_file_path set received=true,其中file_path='/file/path'和time_received='2015-07-24 02:14:34-0600' 这个很好用。但我想对所有与此文件路径匹配的列执行此操作,并且接收的时间大于2015-07-24 02:14:34-0600 接收的时间是日期,群集列。 file_path是string,partition keyCassandra的

如何根据卡桑德拉中大于或小于的日期更新列

例如:

updateasset_by_file_path set received=true,其中file_path='/file/path'和time_received='2015-07-24 02:14:34-0600'

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

接收的时间是日期,群集列。
file_path是string,partition key

Cassandra的WHERE子句有很多限制,如果您有多个集群列,事情就不能像您所期望的那样工作,至少对>、>=、有限制,我认为UPDATE一次只能修改一行,所以我看不到在CQL中更新服务器端多行的方法

两种可能的编程方法:

  • 执行范围查询以返回所有要更新的行,然后在客户端更新返回的每一行。因为它们都是针对同一个分区的,所以可以将更新作为批处理语句发出

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