Cassandra 在中间终止连接?
Cassandra terminates connection in the middle?
我正在为来自 datastax 的 java 使用 Cassandra 驱动程序。我知道我在一个 table 中有 2000 万行。当我使用
Select * from table
该过程在获取大约 800000 行后停止。
在我的 Java 代码中
futureResults = session.executeAsync(statement);
ResultSet results = futureResults.getUninterruptibly();
for (Row row : results) {
}
也许我做错了什么?
你在那里做的是 Cassandra 的一个相当常见的反模式。由于每个数据分区都位于集群的不同部分,因此该查询将创建一个以一个协调器为中心的巨大 scatter/gather。最终事情开始超时,协调器将抛出错误。快速查看日志应该可以找到它。
几乎总是,select 查询应该包含位置的分区键。如果那不可能,最好切换到可以有效扫描每个节点的批处理。 Cassandra 的 Spark 连接器非常适合这样的访问模式。
我正在为来自 datastax 的 java 使用 Cassandra 驱动程序。我知道我在一个 table 中有 2000 万行。当我使用
Select * from table
该过程在获取大约 800000 行后停止。
在我的 Java 代码中
futureResults = session.executeAsync(statement);
ResultSet results = futureResults.getUninterruptibly();
for (Row row : results) {
}
也许我做错了什么?
你在那里做的是 Cassandra 的一个相当常见的反模式。由于每个数据分区都位于集群的不同部分,因此该查询将创建一个以一个协调器为中心的巨大 scatter/gather。最终事情开始超时,协调器将抛出错误。快速查看日志应该可以找到它。
几乎总是,select 查询应该包含位置的分区键。如果那不可能,最好切换到可以有效扫描每个节点的批处理。 Cassandra 的 Spark 连接器非常适合这样的访问模式。