脱机压缩/将多个sstable合并为一个sstable

t1rydlwq  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(517)
$ cd /tmp
$ cp -r /var/lib/cassandra/data/keyspace/table-6e9e81a0808811e9ace14f79cedcfbc4 .
$ nodetool compact --user-defined table-6e9e81a0808811e9ace14f79cedcfbc4/*-Data.db

我希望两个sstable(第二个sstable只包含墓碑)合并成一个sstable,这相当于第一个sstable减去第二个sstable中被墓碑掩盖的数据。
但是,最后一个命令返回 0 退出状态,并且 table-6e9e81a0808811e9ace14f79cedcfbc4 目录(还有两个表)。如何以脱机方式无条件地将多个sstable合并为一个sstable(如上所述,而不是运行集群当前使用的sstable文件)?

7uhlpewt

7uhlpewt1#

只是 nodetool compact <keyspace> <table> 没有真正的离线压缩,只是告诉cassandra要压缩哪些sstables。用户定义的压缩只是给它一个sstables的自定义列表,一个主要的压缩(上面的示例)将包括一个表中的所有sstables。
而这实际上取决于你所使用的版本,如果它将在那里工作https://github.com/tolbertam/sstable-tools#compact 可用。如果你能为你的版本导入cassandra并喜欢它:https://github.com/tolbertam/sstable-tools/blob/master/src/main/java/com/csforge/sstable/compact.java

相关问题