有一种方法如何设置TTL为现有的raws在表中没有重新插入所有数据?
所有文档都讨论了使用自定义/默认TTL插入记录时的示例。https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-to.html
ALTER TABLE "my_keyspace"."my_table" WITH default_time_to_live = 31536000 ;
设置新记录的默认TTL。
有一种方法如何设置TTL为现有的raws在表中没有重新插入所有数据?
所有文档都讨论了使用自定义/默认TTL插入记录时的示例。https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-to.html
ALTER TABLE "my_keyspace"."my_table" WITH default_time_to_live = 31536000 ;
设置新记录的默认TTL。
3条答案
按热度按时间zd287kbt1#
如果不重新插入,就无法更改现有记录的TTL,但可以使用DSBulk之类的工具完成卸载任务,然后在设置TTL时进行加载,这里有一个使用“USING TTL”的加载示例:https://docs.datastax.com/en/dsbulk/docs/reference/dsbulkLoad.html
为每个频繁使用的表设置默认TTL是一个好主意,这样在插入数据时就可以始终覆盖默认TTL,例如:
gab6jxml2#
如果不使用新的TTL重新插入现有数据,则无法更新现有数据的TTL。
处理这个问题的常规方法是使用Apache Spark开发ETL应用程序。使用Spark Cassandra connector时,您需要编写一个应用程序,该应用程序迭代表中的分区,检索单元格值AND
WRITETIME()
,然后使用相同的WRITETIME()
时间戳重新插入带有新TTL的数据。但是请注意Spark连接器只适用于使用
Murmur3Partitioner
和RandomPartitioner
的集群(请参阅此处支持的spark-cassandra-connector分区器)。Spark连接器不适用于Keyspaces的com.amazonaws.cassandra.DefaultPartitioner
,因此您需要确保您的帐户支持默认分区器。详情请参阅Configuring Amazon Keyspaces for integration with the spark-cassandra-connector。如果您的Amazon Keyspaces DB不受支持,您唯一的选择就是编写自己的应用程序,使用新的TTL重写数据。干杯!
5ssjco0h3#
您需要做的是使用AWS Glue和Spark Cassandra连接器。这将是完全无服务器的端到端,并将根据您的表大小进行缩放。Spark Cassandra连接器和Murmur3 partitioner is compatible与Amazon Keyspaces。请参阅此repo以获取示例of exports and imports