Автономное уплотнение / объединение нескольких таблиц SSTable в один - PullRequest
0 голосов
/ 03 июня 2019
$ cd /tmp
$ cp -r /var/lib/cassandra/data/keyspace/table-6e9e81a0808811e9ace14f79cedcfbc4 .
$ nodetool compact --user-defined table-6e9e81a0808811e9ace14f79cedcfbc4/*-Data.db

Я ожидал, что две таблицы SSTable (где вторая содержит только надгробия) будут объединены в одну, что будет эквивалентно первому минус данные, замаскированные надгробиями из второго.

Однако последняя команда возвращает 0 состояние выхода, и ничего не меняется в каталоге table-6e9e81a0808811e9ace14f79cedcfbc4 (все еще две таблицы есть).Любые идеи, как безоговорочно объединить потенциально несколько SSTable в один в автономном режиме (как выше, не в файлах SSTable, используемых в настоящее время работающим кластером)?

1 Ответ

2 голосов
/ 03 июня 2019

Просто nodetool compact <keyspace> <table> Реального сжатия в автономном режиме не существует, только сообщается Кассандре, какие sstables нужно сжать. Определяемое пользователем сжатие просто дает ему собственный список sstables, и основное сжатие (приведенный выше пример) будет включать все sstables в таблицу.

Хотя это действительно зависит от того, какую версию вы используете, будет ли работать https://github.com/tolbertam/sstable-tools#compact. Если отчаянный может импортировать cassandra-all для вашей версии и сделать это так: https://github.com/tolbertam/sstable-tools/blob/master/src/main/java/com/csforge/sstable/Compact.java

...