我的表1有数百万条记录,因此我无法直接在我的数据结构中获取所有数据并进行计算。
使用datastax
java驱动程序,您可以按令牌范围获取所有数据,并从每个令牌范围计算出数据。例如:
Set<TokenRange> tokenRanges = cassandraSession.getCluster().getmetadata().getTokenRanges();for(TokenRange tr: tokenRanges) { List<Row> rows = new ArrayList<>(); for(TokenRange sub: tr.unwrap()){ String query = "SELECt * FROM keyspace.table WHERe token(pk) > ? AND token(pk) <= ?"; SimpleStatement st = new SimpleStatement( query, sub.getStart(), sub.getEnd() ); rows.addAll( session.execute( st ).all() ); } transformAndWriteTonewTable(rows); }每个令牌范围仅包含所有数据的一部分,并且可以由一台物理机处理。您可以独立(并行或异步)处理每个令牌范围,以获得更高的性能。



