DSE Cassandra OperationTimedOutException



我在cassandra中有一个包含大量数据的表。我正在尝试通过hadoopmapreduce程序使用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. 将FetchSize((设置为250000这样的大数字
  2. 将ReadTimeoutMillis((设置为30秒

如有任何帮助,我们将不胜感激:(

Cassandra似乎无法在指定时间内完成请求。您可以在casandra.yaml文件中增加以下参数来处理超时,但程度不会太高。 read_request_timeout_in_ms: write_request_timeout_in_ms:

如果它没有帮助,那么你应该查看你的卡桑德拉的日志,寻找其他异常,如墓碑等。

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的分页功能来查询大型结果,或者您可以在代码本身中处理分页。

相关内容

  • 没有找到相关文章

最新更新