2016-10-03 10 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

Я не уверен, насколько велики строки, которые вы пытаетесь извлечь, и сколько их есть. Но когда вы делаете select в CQL без каких-либо условий для первичного ключа, вы выполняете сканирование диапазона, которое является дорогостоящим. Помните, что это не MySQL. Cassandra работает в лучшем случае, когда вы выполняете поиск по определенным клавишам строк.

Во всяком случае, вы можете попробовать увеличить тайм-аут для cqlsh, чтобы сделать эту работу.

В вашей домашней папке, создайте файл с именем cqlshrc со следующим содержанием: [Соединение] client_timeout не = 10

Вы также можете настроить его так, чтобы отключить тайм-аут: client_timeout = Нет

Дополнительная информация о cqlshrc https://docs.datastax.com/en/cql/3.1/cql/cql_reference/cqlshrc.html

 Смежные вопросы

  • Нет связанных вопросов^_^