【问题标题】:Insert cassandra column family with composite key使用复合键插入 cassandra 列族
【发布时间】:2012-06-26 11:46:22
【问题描述】:

我有一个列族 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)';

但是当我使用 mutator 插入时:

    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)

请有人帮助我,我在这段代码中的错误在哪里?

【问题讨论】:

    标签: nosql cassandra composite-primary-key hector


    【解决方案1】:

    架构将比较器指定为复合类型,但插入会创建一个包含单个字符串(“名称”)的列。

    【讨论】:

    • 是的,我知道,但我想知道:有什么解决方案可以创建一个带有复合键的表,而其他列使用 UTF8 类型????我在 cql3 中尝试它是好的,但在 hector 中,我无法将数据插入到这样的表中 :( :(
    • 不确定您在这里问的是什么...对于指定的架构,您应该更新代码以便 createColumn 使用复合名称,否则修改架构以使比较器成为 utf8。
    猜你喜欢
    • 2013-07-08
    • 2013-08-17
    • 1970-01-01
    • 2013-11-01
    • 2012-12-05
    • 2014-05-05
    • 2014-09-19
    • 1970-01-01
    • 2013-12-06
    相关资源
    最近更新 更多