$ 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文件)?
1条答案
按热度按时间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