DSE Cassandra OperationTimedOutException

时间:2018-07-19 06:45:59

标签: cassandra mapreduce cassandra-2.0 cassandra-3.0

我在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)

我已经尝试过以下方法,但对我来说却没有用-

  1. 将setFetchSize()设为250000之类的大数字。
  2. 将ReadReadoutoutMillis()设置为30秒

感谢您的帮助:)

2 个答案:

答案 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的分页功能可以查询较大的结果,也可以在代码本身中处理分页。