Кассандра Python драйвер ReadTimeout

Я пытаюсь запустить запрос cqlsh, используя официальный драйвер python:

>>> session.execute('select count(*) from cassandra_table')

и я получаю следующую ошибку:

ReadTimeout: Error from server: 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': 'LOCAL_ONE'}

я пытался увеличить время ожидания

попробуйте №1:

>>> session.default_timeout = 60.0
>>> session.execute('select count(*) from cassandra_table')

попробуйте № 2:

>>> session.execute('select count(*) from cassandra_table', timeout=60.0)

оба способа дали мне ту же ошибку чтения, как правильно увеличить время чтения?

Информация о версии:

Cassandra   3.11.0.1900
Spark   2.0.2.6-de611f9
DSE               5.1.5
cassandra-driver 3.12.0

1 ответ

Решение

В кассандре count(*) это действительно дорогая операция, которая потребует чтения всех данных на всех узлах. Учитывая, что вполне возможно, что count(*) работает для небольшого количества данных, но не тогда, когда могут быть строки.

Существует также сообщение в блоге от DataStax о подсчете: https://www.datastax.com/dev/blog/counting-keys-in-cassandra

Другие вопросы по тегам