2016-09-09 56 views
1

我打算打開行數和墓碑給定的cf的所有sstables。它實際上是ISSTableScanner,並且像往常一樣必須掃描sstable中的每一行。打開卡桑德拉sstables行數

如果給定cf的sstable數量有限,這可以正常工作。但是,如果你有1000個sstables,那麼這個方法會導致性能問題,因爲它必須打開每個sstable和掃描。

是否有任何最好的方式來打開給定cf的所有sstables?我知道Runnable接口用於SSTableReader openAll()方法。除此之外,是否有任何最好的方法來實現這一目標?

MapReduce對此有幫助嗎?。

感謝, -Suyodha

回答

2

如果您正在尋找墓碑的數量,你可以通過在統計的SSTable的estimatedTombstoneDropTime倉的計數相加得到那個。

如果您正在尋找哪個分區/行都有您可以使用https://github.com/tolbertam/sstable-tools大多數墓碑(可能包含在C *某天sstablemetadata命令的CASSANDRA-1148部分),並稱之爲「描述」命令,它會給你的墓碑領導者。你可以看到實現here它只是單個sstable,但調用openall只是一個真正打開並行的薄包裝器。

還有spcassandra-tombstones作爲https://github.com/spotify/cassandra-opstools的一部分,您可以看到here的實施。