我正在尝试使用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)
答案 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。