【问题标题】:Cassandra TimeOut?卡桑德拉超时?
【发布时间】:2014-12-28 02:22:01
【问题描述】:

几个月前,我在一个表中有一个大型数据集(超过 200 万行,每行有 100 多列),存储在 cassandra 中(可能是 2 个?)我能够执行一个简单的命令来跟踪该表中的记录数量:

SELECT count(*) from mydata limit 11111111;

几天前我尝试了相同的命令并得到以下错误:

errors={}, last_host=168.176.61.25

这个错误本身并没有多说,经过google一番研究,我认为可能与超时有关。正如您可能期望的那样,运行时间较短的查询可以正常执行,并且总是在处理大约 10 秒后出现错误。

据我了解,cassandra 的超时设置在 cassandra.yaml 中,我更改了以下值

read_request_timeout_in_ms: 25000

range_request_timeout_in_ms:25000

request_timeout_in_ms: 25000

但是错误完全没有变化,并且在同样的 10 秒后仍然失败,

有什么想法吗?

非常感谢

风卡

【问题讨论】:

  • 好吧,为您的查询设计。如果您需要一直运行此计数,请保留一个计数器表并在添加或删除行时更新它。

标签: cassandra timeout cqlsh


【解决方案1】:

如果您只想计算有多少条记录,请不要使用 count(*),在您的架构中放置一个计数器列:http://www.datastax.com/documentation/cql/3.0/cql/cql_using/use_counter_t.html

如果你还需要获取其他操作的所有数据,这个超时有多个reseason,如果你需要我可以提供给你。

【讨论】:

  • 谢谢,这看起来是一个更简单的解决方案。我不再处理那个特定的数据集。但是,我绝对想知道如何处理那么多行并避免超时。你能给一些提示吗?非常感谢曼哈尔
  • 需要分页获取结果,cassandra支持limit但不支持offset。如果您正在执行直接 cql,请使用 timeuuid 来克服偏移问题。如果您使用的是驱动程序,请使用驱动程序分页
猜你喜欢
  • 2017-05-08
  • 2012-07-03
  • 1970-01-01
  • 2015-10-19
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多