2013-10-10 2 views
2

Я пытался использовать свое первое приложение «Helloworld» в Кассандре. Всякий раз, когда я пытаюсь добавить любые данные в мое пространстве ключей семейства колонка я получаю эту ошибку:Cassadra: Не удается разобрать <col_Name> в виде шестнадцатеричных байтов: MarshallException

[[email protected]] set User['ehewitt'] ['fname']='Eben'; 
org.apache.cassandra.serializers.MarshalException: cannot parse 'fname' as hex bytes 

Это несмотря на то, что я выполнил

[[email protected]] assume Users keys as utf8; 

Так вышеприведенная команда, кажется, не имеет какой-либо эффект вообще. Как решить эту проблему? Благодарю.

+1

какое ваше имя CF? 'Пользователи' или' Пользователь' – abhi

+0

Хммм интересно, мне нужно проверить это .... – Ace

+0

Проверьте ответ: http://stackoverflow.com/questions/7837820/why-does-cutting-and-pasting-from- заместитель Cassandra-кли-учебник-не-работа. Работал для меня! – rvnovaes

ответ

-1

Запуск CLI

Вы можете запустить CLI с помощью бен/Cassandra-кли скрипт в установке Cassandra (BIN \ Кассандры cli.bat на окнах). Если вы оцениваете локальный узел cassandra, убедитесь, что он был правильно настроен и успешно запущен до запуска CLI.

В случае успеха вы увидите вывод, подобный этому:

Welcome to cassandra CLI. 

Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit. 

Вы должны затем указать систему для подключения к:

connect localhost/9160; 

Создание ключевого пространства

Сначала мы создаем пространство ключей для запуска наших примеров.

create keyspace Twissandra; 

Выбор пользователю пространство ключей

Затем мы должны выбрать наш пример, как наш пространство ключей новый контекст, прежде чем мы сможем запускать любые запросы.

use Twissandra; 

создать столбец

Затем мы можем создать колонку, чтобы играть.

create column family User with comparator = UTF8Type;

Для более поздних примеров работы вы также должны обновить схему, используя следующую команду. Это установит тип возврата для первого и последнего имени, чтобы сделать их доступными для человека. Он также добавит и проиндексирует поле возраста, чтобы вы отфильтровывали свои данные, используя поле «Имя пользователя».

update column family User with 
     column_metadata = 
     [ 
     {column_name: first, validation_class: UTF8Type}, 
     {column_name: last, validation_class: UTF8Type}, 
     {column_name: age, validation_class: UTF8Type, index_type: KEYS} 
     ]; 

Добавление данных

Чтобы добавить данные, которые мы хотим в нашей новой колонке мы должны сначала указать наш тип ключа по умолчанию в противном случае мы должны указать его для каждого ключа в формате [utf8 ('keyname')], вероятно, это целесообразно, если у вас есть смешанные типы ключей, но упростить чтение простых случаев.

Итак, мы запускаем приведенную ниже команду, которая будет длиться до конца сессии cli. При выходе и перезапуске мы должны запустить его снова.

assume User keys as utf8; 

, а затем мы добавляем наши данные.

set User['jsmith']['first'] = 'John'; 
set User['jsmith']['last'] = 'Smith'; 
set User['jsmith']['age'] = '38'; 

Если вы получаете ошибки, как это не может разобрать «John» в виде шестнадцатеричных байт, то вероятно, что вы либо не установили тип ключа по умолчанию, или вы не обновили свою схему, как и в примере создания столбца ,

Для обновления данных

Если необходимо обновить значение мы просто установить его снова.

set User['jsmith']['first'] = 'Jack'; 

Чтобы получить данные

Теперь давайте прочитаем назад JSmith строку, чтобы увидеть, что он содержит:

get User['jsmith']; 

Команда прибудет использует API # get_slice

для запроса данных

get User where age = '12'; 
2

Cassandra принимает столбцы как байты.

Проверить с

help assume; 
assume User keys as ascii; 
assume User comparator as ascii; 
assume User validator as ascii; 
assume User sub_comparator as ascii; 
set User['ehewitt']['fname']='Eben'; 
Value inserted. 
Elapsed time: 216 msec(s). 
0

У меня была аналогичная проблема, но кли сказал мне, что значение то, что не может быть разобран.

set game_outcome['1']['userId']='123asdasd'; 
cannot parse '123asdasd' as hex bytes 

так что я пытался использовать функцию utf8 так:

set game_outcome['1']['userId']=utf8('123asdasd'); 
    cannot parse '123asdasd' as hex bytes 

Попробуйте

set User['ehewitt'] [utf8('fname')]='Eben' 

Я пытался использовать установить некоторые предположения, как этот

assume validator keys as utf8; 
validator not found in current keyspace. 

Но, как вы можете видеть, что это не сработало!

Надеюсь, этот ответ поможет.

Смежные вопросы