Подтвердить что ты не робот

Не удалось получить данные из Cassandra

Я не могу извлечь данные из Cassandra после выхода из cli. Когда я вернусь, чтобы получить данные в другом сеансе, я получаю эту ошибку:

org.apache.cassandra.db.marshal.MarshalException: не удается разобрать "jsmith" как шестнадцатеричные байты

Кажется, что семейство столбцов остается и в ключевом пространстве.

Я также изменил формат клавиш на ascii (предположим, что ключи для пользователей как ascii;)... И это также не остается установленным.

Есть ли причина? Что происходит?

4b9b3361

Ответ 1

Все команды "принять" являются временными и ограничиваются одним сеансом cli. Для тех, кто сейчас не сидит перед кли, мы имеем в виду:

assume <cf> comparator as <type>;
assume <cf> sub_comparator as <type>;
assume <cf> validator as <type>;
assume <cf> keys as <type>;

Assume one of the attributes (comparator, sub_comparator, validator or keys)
of the given column family match specified type. The specified type will
be used when displaying data returned from the column family.

Это чисто клиентская сторона.

Вместо этого вы должны записывать эти метаданные навсегда в определении ColumnFamily, например. из readme,

create column family Users with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;

Это отличается от "предполагать" тремя способами:

  • Он постоянно записан в Cassandra
  • Cassandra будет применять указанный тип к введенным данным.
  • Все клиенты могут запрашивать и использовать эти метаданные, чтобы делать с ними интеллектуальные вещи, а не только cli

Предполагается, что это прежде всего в качестве обходного пути для старых наборов данных, которые не могут быть обновлены для использования "реального" типа на стороне сервера.