Cassandra 将 Token 转换为 long
Cassandra convert Token to long
我想 运行 在 table 上进行这样的查询:
SELECT count(*) FROM mytable WHERE token(_id) >= -9220405531215751472 AND token(_id) < -9215701564955960000 AND state=true ALLOW FILTERING;
我通过 metadata.getTokenMap()
读取标记范围,然后 tokenMap.getTokenRanges()
。但它给了我开始和结束令牌作为令牌对象(例如 Murmur3Token(9187337865070158013)
)!我如何将其转换为 long 或 String 以在查询中使用:
CqlSession session = builder.build();
Metadata metadata = session.getMetadata();
if (metadata.getTokenMap().isPresent()) {
TokenMap tokenMap = metadata.getTokenMap().get();
for(TokenRange range : tokenMap.getTokenRanges()) {
System.out.println(range.getStart()); // output Murmur3Token(9187337865070158013)
}
}
我找到了转换方法!它必须显式转换为 Murmur3Token
并调用 getValue
方法。
long start,end;
String sql;
for(TokenRange range : tokenMap.getTokenRanges()) {
start = ((Murmur3Token) range.getStart()).getValue();
end = ((Murmur3Token) range.getEnd()).getValue();
sql = "SELECT count(*) FROM mytable WHERE token(_id) >= "+start+" AND token(_id) < "+end+" AND state=true ALLOW FILTERING;";
System.out.println(i +":" + sql);
}
我想 运行 在 table 上进行这样的查询:
SELECT count(*) FROM mytable WHERE token(_id) >= -9220405531215751472 AND token(_id) < -9215701564955960000 AND state=true ALLOW FILTERING;
我通过 metadata.getTokenMap()
读取标记范围,然后 tokenMap.getTokenRanges()
。但它给了我开始和结束令牌作为令牌对象(例如 Murmur3Token(9187337865070158013)
)!我如何将其转换为 long 或 String 以在查询中使用:
CqlSession session = builder.build();
Metadata metadata = session.getMetadata();
if (metadata.getTokenMap().isPresent()) {
TokenMap tokenMap = metadata.getTokenMap().get();
for(TokenRange range : tokenMap.getTokenRanges()) {
System.out.println(range.getStart()); // output Murmur3Token(9187337865070158013)
}
}
我找到了转换方法!它必须显式转换为 Murmur3Token
并调用 getValue
方法。
long start,end;
String sql;
for(TokenRange range : tokenMap.getTokenRanges()) {
start = ((Murmur3Token) range.getStart()).getValue();
end = ((Murmur3Token) range.getEnd()).getValue();
sql = "SELECT count(*) FROM mytable WHERE token(_id) >= "+start+" AND token(_id) < "+end+" AND state=true ALLOW FILTERING;";
System.out.println(i +":" + sql);
}