Схема не полностью переведена из протокола Thrift в протокол CQL
Я пытаюсь перейти от использования pycassa к нативному протоколу в моем проекте (что позволит нам обновить версию cassandra). Моя схема была определена с использованием pycassa, поэтому она создала семейство Column с использованием компактного хранилища и имеет 3 столбца, которые не являются частью составного первичного ключа (я знаю, что это не разрешено протоколом CQL).
Версия моего текущего кластера Cassandra - 2.0.17. Схема, когда я делаю "показать схему" с использованием протокола Thrift, выглядит так:
create column family store
with column_type = 'Standard'
and comparator = 'CompositeType(org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.LongType),org.apache.cassandra.db.marshal.AsciiType,org.apache.cassandra.db.marshal.AsciiType)'
and default_validation_class = 'DoubleType'
and key_validation_class = 'AsciiType'
and column_metadata = [
{column_name : 'something1',
validation_class : AsciiType},
{column_name : 'something2',
validation_class : AsciiType}]
Но когда я проверяю схему на собственном протоколе, в ней отсутствуют столбцы "column3" и "value". Получается так:
CREATE TABLE store (
key ascii,
column1 bigint,
column2 ascii,
something1 ascii,
something2 ascii,
PRIMARY KEY ((key), column1, column2)
) WITH COMPACT STORAGE AND
CLUSTERING ORDER BY (column1 DESC, column2 ASC)
Теперь из-за этого несоответствия я не могу перейти с pycassa на собственный протокол на стороне клиента. Я не смог найти ничего, чтобы преодолеть эту проблему и убедиться, что собственный протокол видит правильную схему. Можете ли вы предложить мне что-нибудь исправить?
1 ответ
Короче измените таблицу, добавив пропущенные столбцы.
Похоже, у вас нет метаданных столбца для значения или column3. Я не уверен, что это за типы, если они просто ascii, вы должны быть в состоянии сделать следующее:
ALTER TABLE store ADD column3 ascii;
ALTER TABLE store ADD value ascii;