我在cassandra中有一张表格,其中包含非常庞大的数据。我正在尝试通过hadoop mapreduce程序使用dse驱动程序读取分区上的数据。对于某些分区,该分区中可能有超过1亿行,并且当我尝试读取这些分区时,我遇到了OperationTimedOutException。
下面是堆栈跟踪-
com.datastax.driver.core.exceptions.OperationTimedOutException: [X.X.X.X/X.X.X.X:XXXX] Timed out waiting for server response
at com.datastax.driver.core.exceptions.OperationTimedOutException.copy(OperationTimedOutException.java:35)
at com.datastax.driver.core.exceptions.OperationTimedOutException.copy(OperationTimedOutException.java:17)
at com.datastax.driver.core.DriverThrowables.propagateCause(DriverThrowables.java:28)
at com.datastax.driver.core.ArrayBackedResultSet$MultiPage.prepareNextRow(ArrayBackedResultSet.java:304)
at com.datastax.driver.core.ArrayBackedResultSet$MultiPage.isExhausted(ArrayBackedResultSet.java:260)
at com.datastax.driver.core.ArrayBackedResultSet$1.hasNext(ArrayBackedResultSet.java:134)
at com.datastax.driver.core.ArrayBackedResultSet.all(ArrayBackedResultSet.java:123)
我已经尝试过以下方法,但对我来说却没有用-
感谢您的帮助:)
答案 0 :(得分:0)
似乎Cassandra无法在指定时间内完成请求。您可以将cassandra.yaml文件中的参数增加到以下值,以将超时处理的程度仅高得多。
Origin
如果这没有帮助,那么您应该查看cassandra的日志中是否存在其他异常,例如墓碑等。
答案 1 :(得分:0)
Cassandra配置文件获取了用于限制响应时间的参数。如果响应花费更多时间,则势必会得到Timed out waiting for server response
。但这可以在cassandra.yaml文件中手动配置。
请根据需要更改以下参数:
# How long the coordinator should wait for read operations to complete
read_request_timeout_in_ms: 5000
# The default timeout for other, miscellaneous operations
request_timeout_in_ms: 10000
如果您无权访问cassandra配置文件。使用cassandra的分页功能可以查询较大的结果,也可以在代码本身中处理分页。