Проблема схемы Кассандры в 2.1.14 - PullRequest
0 голосов
/ 06 сентября 2018

Мы столкнулись со странной проблемой при изменении таблицы. Мы используем метод sync_table () драйвера Python Cassandra для синхронизации нашей модели (определенной в py-файле) с Cassandra. Кластер представляет собой 20 узлов, испытывающих приличную нагрузку (максимальный уровень использования всех узлов составляет 50-70%).

Когда схема синхронизируется с помощью драйвера Python Cassandra, внутренне она выполняет команды «ALTER TABLE ADD». В конкретной таблице, когда мы добавили семь новых столбцов, мы заметили это странное поведение

  • Команда DESCRIBE TABLE показывает 3 или 4 из 7 новых созданных столбцов. Однажды он показал все 7 столбцов в выходных данных DESCRIBE TABLE.

    • Но в выводе select * новые столбцы не отображаются.

Поведение противоречиво. Мы удалили столбцы вручную, а затем повторно синхронизировали схему. Каждый раз, когда появляется проблема с командой select, не отображающей несколько из 7 столбцов.

Есть какие-нибудь указатели для устранения этой проблемы? Это связано с нагрузкой на узлы Кассандры?

1 Ответ

0 голосов
/ 06 сентября 2018

Наиболее вероятная проблема заключается в том, что вы столкнулись с проблемой согласования схемы из-за выполнения многих команд изменения схемы.

Как правило, вам нужно отправлять команды изменения схемы только одному хосту и получать подтверждение соглашения о схеме. Первое, что обычно делается, путем создания сеанса, который использует политику белого списка, где список состоит только из одного узла (в отличие от политик с поддержкой токенов или циклического перебора). Во-вторых, это просто - вы либо проверяете соответствующий флаг набора результатов, возвращенного после выполнения команды, либо проверяете соответствующее поле / метод метаданных кластера.

...