Nosql Cassandra Thrift使用DateType Comparator添加动态行
我有以下专栏:Nosql Cassandra Thrift使用DateType Comparator添加动态行,nosql,cassandra,thrift,Nosql,Cassandra,Thrift,我有以下专栏: CREATE COLUMN FAMILY messages with comparator=DateType and key_validation_class=UTF8Type and default_validation_class=UTF8Type; 现在,我使用Cassandra Thrift存储新数据: TTransport tr = this.dataSource.getConnection(); TProtocol proto = new TBi
CREATE COLUMN FAMILY messages with comparator=DateType and key_validation_class=UTF8Type and default_validation_class=UTF8Type;
现在,我使用Cassandra Thrift存储新数据:
TTransport tr = this.dataSource.getConnection();
TProtocol proto = new TBinaryProtocol(tr);
Cassandra.Client client = new Cassandra.Client(proto);
long timestamp = System.currentTimeMillis();
client.set_keyspace("myTestSPace");
ColumnParent parent = new ColumnParent("messages");
Column messageColumn = new Column();
String time = String.valueOf(timestamp);
messageColumn.setName(time.getBytes());
messageColumn.setValue(toByteBuffer(msg.getText));
messageColumn.setTimestamp(timestamp);
client.insert(toByteBuffer(msg.getAuthor()), parent, messageColumn, ConsistencyLevel.ONE);
但我有个例外:
InvalidRequestException(why:Expected 8 or 0 byte long for date (16))
at org.apache.cassandra.thrift.Cassandra$insert_result.read(Cassandra.java:15198)
at org.apache.cassandra.thrift.Cassandra$Client.recv_insert(Cassandra.java:858)
at org.apache.cassandra.thrift.Cassandra$Client.insert(Cassandra.java:830)
at com.vanilla.cassandra.DaoService.addMessage(DaoService.java:57)
如何纠正 看来您正在使用原始的节约界面。出于您所遇到的原因以及许多其他原因,我强烈建议您使用现有的高级客户机,如CQL客户机 问题的根本原因是必须将不同的数据类型打包成二进制格式。更高级别的客户端会自动管理此功能