Cassandra简单插入不起作用

时间:2013-12-26 09:57:29

标签: cassandra hector

我正在尝试使用Hector客户端在cassandra中进行简单插入。 我创建了简单的表格:

create table customs (id uuid PRIMARY KEY, char_col_1 varchar);

尝试插入一些内容:

UUID columnId = UUID.randomUUID();

        HColumn<String, String> column =
                HFactory.createColumn(
                        "char_col_1",
                        "test",
                        12345,
                        StringSerializer.get(),
                        StringSerializer.get()
                );


        Mutator<UUID> mutator = HFactory.createMutator(keyspace, UUIDSerializer.get());
        mutator.insert(columnId, "customs", column);

但我总是得到错误:

InvalidRequestException(why:Not enough bytes to read value of component 0)

1 个答案:

答案 0 :(得分:2)

我认为这是因为Hector无法将数据(通过thrift)插入到具有非紧凑存储的表中。我不是一名执行专家。

如果按如下方式创建列族,则可能有效。

create table customs (id uuid PRIMARY KEY, char_col_1 varchar) with compact storage;

但是,为什么需要在CQL中创建列族并通过hector插入数据。这不是推荐的方式。你应该选择CQL或thrift。

在您的情况下,如果您计划将hector用于所有数据操作,则可以使用hector本身或cassandra-cli创建列族。

或者,如果您只希望CQL创建列族,则可以使用datastax java驱动程序而不是hector。