2016-10-03 56 views
1

我试图用cqlsh(cqlsh 5.0.1 | Cassandra 2.1.12 | CQL spec 3.2.1 | Native protocol v3奇怪的行为,同时从卡桑德拉读取数据的ColumnFamily

查询上做圆柱家族以下查询:

select * from CassandraColumnFamily limit 10 

但它提供了以下错误

错误:

ReadTimeout: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'} 

因为我能够使用下面的python脚本读取数据。我无法弄清楚这里可能是什么问题。

cluster = Cluster(
      contact_points = ['IP1','IP2','IP3'] 
      ) 
    session = cluster.connect('cw')  
    query = "select col1 , col2, col3, col4, col5 from CassandraColumnFamily" 
    statement = SimpleStatement(query, fetch_size=50000) 

回答

1

我不知道你试图抓取的行有多大,有多少。但是,当您在CQL中进行选择时,在主键上没有任何条件的情况下,您正在执行成本很高的范围扫描。请记住,这不是MySQL。当您对特定行键进行查找时,Cassandra会发挥最佳效果。

无论如何,你可以尝试增加cqlsh的超时时间来完成这项工作。

在你的主文件夹,创建一个名为cqlshrc,内容如下文件: [连接] CLIENT_TIMEOUT = 10

您还可以设置它像这样禁用超时: CLIENT_TIMEOUT =无

更多关于cqlshrc的信息 https://docs.datastax.com/en/cql/3.1/cql/cql_reference/cqlshrc.html