从Cassandra Columnfamily读取数据时出现奇怪的行为

时间:2016-10-03 05:55:33

标签: python cassandra datastax cassandra-2.0

我正在尝试使用cqlsh(cqlsh 5.0.1 | Cassandra 2.1.12 | CQL spec 3.2.1 | Native protocol v3)对列族进行以下查询

查询:

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 个答案:

答案 0 :(得分: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