Почему не работает вырезание и вставка из учебника Cassandra CLI? - PullRequest
5 голосов
/ 20 октября 2011

Слепо следуя http://wiki.apache.org/cassandra/CassandraCli, и кто-то может объяснить это?

aaron-mac:apache-cassandra-1.0.0 aaron$ bin/cassandra-cli -host localhost -port 9160
Connected to: "Test Cluster" on localhost/9160
Welcome to the Cassandra CLI.

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

[default@unknown] use Keyspace1;
Authenticated to keyspace: Keyspace1

[default@Keyspace1] create column family User with comparator = UTF8Type; 
5ef4bad0-fb2a-11e0-0000-242d50cf1ffd
Waiting for schema agreement...
... schemas agree across the cluster
[default@Keyspace1] set User['jsmith']['first'] = 'John'; 
org.apache.cassandra.db.marshal.MarshalException: cannot parse 'jsmith' as hex bytes
[default@Keyspace1] 

Ответы [ 3 ]

21 голосов
/ 15 марта 2012

Прежде чем запускать какую-либо команду set в CLI Cassandra, всегда рекомендуется сделать следующее:

assume <column_family> keys as utf8;
assume <column_family> comparator as utf8;
assume <column_family> validator as utf8;

Это гарантирует, что все, что вы установили и перечислите, будет понято

P.S .: Это только для новичков в Кассандре

4 голосов
/ 20 октября 2011

Это для более старой версии Cassandra. Ключи теперь обрабатываются как шестнадцатеричные байты по умолчанию, поэтому вам нужно:

set User[utf8('jsmith')]['first'] = 'John';

или сделайте:

assume User keys as utf8;
set User['jsmith']['first'] = 'John';

Или, как написано в примечании:

Примечание. Начиная с Cassandra 0.8, мы должны объявить key_validation_class для семейства столбцов:

update column family User with key_validation_class=UTF8Type;
1 голос
/ 23 марта 2015
set User['jsmith'][utf8('first')] = utf8('John');

Если вы не уверены в команде set, введите help set;, и она покажет полную документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...