我收到以下错误。
cassandra.ReadTimeOut: Error from server: code =1200 [Coordinator node timed out waiting for replica nodes' responses] message = Operation timed out - received only 0 responses." info={consistency: 'LOCAL_ONE',required_responses": 1, 'received_responses": 0}
这是它正在运行的查询
query = "select col1,col2,col3,col4 from table where timestamp >= last_hour and <= current_hour ALLOW FILTERING"
last\u hour和current\u hour是获取当前时间和最后1小时时间的变量。
那我会的
queryResult = session.execute_async(query)
并接收错误。
它有时只是成功地运行,而另一些则抛出错误。
1条答案
按热度按时间wqnecbli1#
主要原因是你用错了Cassandra。只有在执行特定分区的读取时,它才能快速工作。但是在您的例子中,您对非分区列有一个条件(或者即使它是一个分区,您也不能对它执行范围查询),这会导致cassandra扫描数据库中的所有数据(在所有节点上)以获得结果。对于合理数量的数据,这需要大量的时间,并导致超时。
cassandra数据建模的第一条规则是“如果你使用allow过滤,你就做错了”。。。
我建议参加datastax academy的ds201和ds220课程,以了解cassandra是如何工作的,以及如何为其设计数据模型。