Java で thrift を使用して、複合キーを使用して列ファミリーに挿入しようとしています。次の例外が発生します。
InvalidRequestException(why:Not enough bytes to read value of component 0)
CQLSHを使用してCFを作成した方法は次のとおりです。「test」に ("1","2","aaa") を挿入したい。
CREATE COLUMNFAMILY test (id1 varchar, id2 varchar, value varchar,PRIMARY KEY (id1,id2));
これが私のソースコードです。ここで何が間違っていて、それを機能させる方法を知っている人はいますか?
public static void main(String[] args) throws Exception {
TSocket socket = new TSocket("10.10.8.200", 9160);
TFramedTransport transport = new TFramedTransport(socket);
Cassandra.Client client = new Cassandra.Client(new TBinaryProtocol(transport));
transport.open();
client.set_cql_version("3.0.0");
client.set_keyspace("bigdata");
ColumnParent parent = new ColumnParent("test");
List<AbstractType<?>> keyTypes = new ArrayList<AbstractType<?>>();
keyTypes.add(UTF8Type.instance);
keyTypes.add(UTF8Type.instance);
CompositeType compositeKey = CompositeType.getInstance(keyTypes);
Builder builder = new Builder(compositeKey);
builder.add(ByteBuffer.wrap("1".getBytes()));
builder.add(ByteBuffer.wrap("2".getBytes()));
ByteBuffer rowid = builder.build();
Column column = new Column();
column.setName("value".getBytes());
column.setValue("aaa".getBytes());
column.setTimestamp(System.currentTimeMillis());
client.insert(rowid, parent, column, ConsistencyLevel.ONE);
}