Мы столкнулись со странной проблемой при изменении таблицы. Мы используем метод sync_table () драйвера Python Cassandra для синхронизации из нашей модели (определенной в файле py) с Cassandra. Кластер представляет собой 20 узлов, подвергающихся приличной нагрузке (все узлы в диапазоне от 50 до 70% максимального использования).
Когда схема синхронизируется с использованием драйвера Python Cassandra, внутри выполняется команда «ALTER TABLE ADD». В конкретной таблице, когда мы добавили семь новых столбцов, мы заметили это странное поведение
Команда DESCRIBE TABLE показывает 3 или 4 из 7 новых созданных столбцов. Однажды он показал все 7 столбцов в выводе DESCRIBE TABLE.
Непоследовательное поведение. Мы удалили столбцы вручную, а затем повторно синхронизировали схему. Каждый раз, когда проблема появляется, когда команда выбора не показывает несколько из 7 столбцов.
Есть указатели для устранения этой проблемы? Это из-за нагрузки на узлы Кассандры?
Наиболее вероятная проблема заключается в том, что вы столкнулись с проблемой согласования схемы из-за выполнения многих команд изменения схемы.
Как правило, вам нужно отправить команды изменения схемы только на один хост и получить подтверждение о согласовании схемы. Первое, что обычно делается, создается путем создания сеанса, который использует политику белого списка, где список состоит только из одного узла (в отличие от политик с поддержкой токенов или циклических политик). Во-вторых, просто - вы либо проверяете соответствующий флаг результирующего набора, возвращаемого после выполнения команды, либо проверяете соответствующее поле / метод метаданных кластера.
Это действительно было проблемой. Я использовал WhitelistRoundRobinPolicy только с первым узлом cassandra в кластере.
Спасибо @alex. Это объясняет проблему. Я постараюсь вернуться.