Тайм-аут узла координатора базы данных Cassandra истек? - PullRequest
0 голосов
/ 08 апреля 2020

Я получаю следующую ошибку.

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_hour и current_hour - переменные, которые захватывают текущее время и последние 1 час времени

тогда я делаю

queryResult = session.execute_async(query)

и получаю ошибку.

Иногда она просто успешно запускается, а в других выдает эту ошибку.

1 Ответ

1 голос
/ 09 апреля 2020

Основная причина в том, что вы неправильно используете Кассандру. Он работает быстро, только когда вы выполняете чтение только указанного раздела c. Но в вашем случае у вас есть условие для столбца без разделов (или даже если это раздел, вы не можете выполнить запрос диапазона к нему), и это заставляет Cassandra сканировать все данные в базе данных (на всех узлах) чтобы получить результат. А при разумном количестве данных это занимает значительное количество времени и приводит к тайм-ауту.

Первое правило моделирования данных Cassandra - «если вы используете ALLOW FILTERING, вы делаете что-то не так» ...

Я рекомендую пройти курсы DS201 и DS220 на DataStax Academy , чтобы понять, как работает Cassandra и как разработать модель данных для нее.

...