Cassandra在中间终止连接?

时间:2016-04-15 10:04:42

标签: java cassandra datastax

我正在使用来自datastax的java的Cassandra驱动程序。我知道我在一张桌子上有20亿行。当我使用

Select * from table

在提取了大约800000行后,该过程停止。

在我的Java代码中

futureResults = session.executeAsync(statement);
ResultSet results = futureResults.getUninterruptibly();
for (Row row : results) {

}

也许我做错了什么?

1 个答案:

答案 0 :(得分:3)

你在做什么与Cassandra有一个相当普遍的反模式。由于每个数据分区都位于群集的不同部分,因此该查询将创建一个以一个协调器为中心的大量分散/聚集。最终事情开始超时,协调员将抛出错误。快速查看日志应该可以找到它。

几乎总是,select查询应该包含locality的分区键。如果那是不可能的,那么切换到有效扫描每个节点的批处理是最好的。 Cassandra的Spark连接器非常适合这种访问模式。