Вставьте семейство столбцов cassandra с составным ключом

У меня есть семейство столбцов AllLog, создайте его

create column family LogData
  with column_type = 'Standard'
  and comparator = 'CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)'
  and default_validation_class = 'UTF8Type'
  and key_validation_class = 'CompositeType(UTF8Type,UTF8Type)';

но когда я использую мутатор для вставки:

    String key0 = "key0";
    String key1 = "key1";

    Composite compositeKey = new Composite();
    compositeKey.addComponent(key0, StringSerializer.get());
    compositeKey.addComponent(key1, StringSerializer.get());

    // add
    mutator.addInsertion(compositeKey, columnFamilyName, HFactory.createColumn("name", "value"));
    mutator.execute();

всегда через исключение:

me.prettyprint.hector.api.exceptions.HInvalidRequestException:
InvalidRequestException(why:Not enough bytes to read value of component 0)

Пожалуйста, помогите мне, где моя ошибка в этом коде?


person tnk_peka    schedule 25.06.2012    source источник


Ответы (1)


Схема определяет компаратор как составной тип, но при вставке создается столбец с одной строкой ("имя").

person libjack    schedule 25.06.2012
comment
да, я знаю это, но мне интересно, что: есть ли какое-либо решение, позволяющее создать таблицу с составным ключом, а другие столбцы используют тип UTF8???? я пробую это в cql3, все в порядке, но в hector я не могу вставить данные в такую ​​​​таблицу :( :( - person tnk_peka; 26.06.2012
comment
Не уверен, что вы здесь спрашиваете ... с указанной схемой вы должны обновить код, чтобы createColumn использовал составное имя, иначе измените схему, чтобы сделать компаратор utf8. - person libjack; 26.06.2012