在where子句中使用cassandra的ttl()

在where子句中使用cassandra的ttl(),cassandra,ttl,Cassandra,Ttl,我想问一下,是否有可能从卡桑德拉那里得到时间超过0的行。因此,在下一步中,我可以使用TTL0更新这些行。目标基本上是将db中每个条目的所有列的ttl更改为0 我尝试了从ttlcolumn1>0的表中选择*,但似乎不可能在where子句中使用ttl函数 我还找到了一种方法,可以将所有行导出到csv,删除表中的数据,并使用新的ttl从csv再次导入它们。这是可行的,但它是危险的,因为我们在生产中有超过百万个条目,我们不知道它将如何运行。仅使用CQL无法做到这一点-您需要一些工具的支持,例如: DSB

我想问一下,是否有可能从卡桑德拉那里得到时间超过0的行。因此,在下一步中,我可以使用TTL0更新这些行。目标基本上是将db中每个条目的所有列的ttl更改为0

我尝试了从ttlcolumn1>0的表中选择*,但似乎不可能在where子句中使用ttl函数


我还找到了一种方法,可以将所有行导出到csv,删除表中的数据,并使用新的ttl从csv再次导入它们。这是可行的,但它是危险的,因为我们在生产中有超过百万个条目,我们不知道它将如何运行。

仅使用CQL无法做到这一点-您需要一些工具的支持,例如:

DSBulk-您可以将所有数据卸载到CSV文件中,如果将其设置为0,则使用新的TTL集重新加载,然后重新加载数据。这是一本书。但是您不能在TTL上设置条件,这就是为什么您需要卸载所有数据的原因 即使在本地主模式下,也可以使用Spark Cassandra接头进行火花点火。版本早期版本仅支持RDDAPI-适用于Spark 2.4。这可以一次性完成,直接在spark shell中使用类似的方法,您需要调整select&filter语句中的列: 导入org.apache.spark.sql.cassandra_ val data=spark.read.cassandraFormattable,keyspace.load val ttlData=data.selectttlcol1.ascol\u ttl,$col2,$col3.filter$col\u ttl>0 ttlData.dropcol\u ttl.write.cassandraFormattable,keyspace.modeappend.save
您不能仅使用CQL来实现这一点-您需要一些工具的支持,例如:

DSBulk-您可以将所有数据卸载到CSV文件中,如果将其设置为0,则使用新的TTL集重新加载,然后重新加载数据。这是一本书。但是您不能在TTL上设置条件,这就是为什么您需要卸载所有数据的原因 即使在本地主模式下,也可以使用Spark Cassandra接头进行火花点火。版本早期版本仅支持RDDAPI-适用于Spark 2.4。这可以一次性完成,直接在spark shell中使用类似的方法,您需要调整select&filter语句中的列: 导入org.apache.spark.sql.cassandra_ val data=spark.read.cassandraFormattable,keyspace.load val ttlData=data.selectttlcol1.ascol\u ttl,$col2,$col3.filter$col\u ttl>0 ttlData.dropcol\u ttl.write.cassandraFormattable,keyspace.modeappend.save