2017-06-30 2 views
0

Ich habe Tabelle mit vielen Datensätzen mit TTL-Wert für 1 Jahr beim Einfügen eingestellt. Jetzt möchte ich die Aufzeichnungen mit TTL-Wert auf einfache Weise auf 5 Jahre aktualisieren. Ich weiß, wir können es durch UPDATE TABLE USING TTL <value> set column ='' where condition tun, aber ich habe Millionen Datensätze, also brauche ich eine Lösung mit einer Abfrage.Update TTL-Wert für vorhandene Zeilen in einer Tabelle für Cassandra-Datenbank

+0

Ich glaube nicht, dass es mit einem Quey möglich ist .... Sie können den Spark-Cassandra-Anschluss verwenden, um die Daten zu lesen und sie zurück in Cassandra ... –

Antwort

0

Sie können es nicht in einer einzelnen Abfrage tun. Die TTL wird mit den Daten geschrieben, um die TTL zu ändern, müssen Sie alles neu schreiben. Ich würde entweder einen Spark-Job, ein A 1 off-Skript zum Lesen und Neuschreiben von allem empfehlen oder ein benutzerdefiniertes Komprimierungstool schreiben, um während einer Komprimierung alles neu zu schreiben (einfacher in 3.x).

+0

können Sie die beste Lösung für Version 2.1 empfehlen. Und was ist Spark Job? –

+0

Am schnellsten ist es, einfach ein kleines Skript zu schreiben, das alles mit einem neuen ttl liest und neu schreibt. Kann die WRITETIME - Funktion bei select verwenden, um die Zeit, in der sie geschrieben wurde, zu erhalten und daraus das neue ttl '(5 years - (now - writetime))' abzuleiten –

Verwandte Themen