我的数据负荷很高(每分钟约50万),这就是我的表格:
CREATE TABLE test.metric (
key text,
timestamp bigint,
value double,
PRIMARY KEY (key, timestamp) )
我需要获得所有独特的key
。我当然可以做SELECT DISTINCT key from metrics;
但我想知道是否有更有效的方法(除了创建另一个只包含密钥的表)来获取所有不同的分区键(可能来自某些cassandra表)
答案 0 :(得分:2)
您要做的是设置一组并行作业,每个作业都执行:
SELECT DISTINCT key FROM metrics WHERE token(key) >= ? AND token(key) < ?
然后将环(你可能正在使用Cassandra的Murmur3分区器,你将从-2 ^ 63转到2 ^ 63)分成合理的多个部分,然后并行发出这些查询。您可以使用nodetool ring
的输出来帮助您提供有关分割作业的一些提示 - 将其分解为主机,这样您每个主机只运行少量SELECT查询可能是最佳的。