Java 读取cassandra中的行和反序列化问题
我想从列族中获取所有行,并显示所有列。我试过这个:Java 读取cassandra中的行和反序列化问题,java,cassandra,hector,Java,Cassandra,Hector,我想从列族中获取所有行,并显示所有列。我试过这个: // Static import of HFactory! // First, insert the data Mutator<String> mutator = HFactory.createMutator(fKeyspace, fStringS); mutator.insert("fahrer1", "Fahrer", createStringColumn("first", "John")); mutator.insert("
// Static import of HFactory!
// First, insert the data
Mutator<String> mutator = HFactory.createMutator(fKeyspace, fStringS);
mutator.insert("fahrer1", "Fahrer", createStringColumn("first", "John"));
mutator.insert("fahrer2", "Fahrer", createStringColumn("first", "Vorname"));
mutator.insert("fahrer2", "Fahrer", createStringColumn("second", "Nachname"));
mutator.
addInsertion("fahrer3", "Fahrer",
createColumn("first", "Firstname", fStringS,
fStringS)).
addInsertion("fahrer3", "Fahrer",
createColumn("second", "Lastname", fStringS,
fStringS)).
addInsertion("fahrer3", "Fahrer",
createColumn("age", 29L, fStringS, fLongS))
.execute();
// Now select..
CqlQuery<String, String, String> cqlQuery =
new CqlQuery<String, String, String>(fKeyspace,fStringS,fStringS,fStringS);
cqlQuery.setQuery("SELECT * FROM ColumnFamily");
QueryResult<CqlRows<String, String, String>> result = cqlQuery.execute();
CqlRows<String, String, String> rows = result.get();
for (Row<String, String, String> row : rows.getList()) {
System.out.println(row.getKey() + ":");
for(HColumn<String, Object>col : row.getColumnSlice().getColumns()) {
System.out.println(col.getName() + " : " + col.getValue());
}
}
}
您是否尝试过使用byte[]而不是Object?所有Cassandra数据项的底层类型都是字节数组。e、 g
QueryResult<CqlRows<String, String, byte[]>>
并查看返回的类型(如果有)。ML的答案:
另外,请看一下新的模板包。它提供了对键入结果的更合理的检索。下面是一个入门指南,它利用了以下内容:
如果通过Cassandra CLI查询相同的ColumnFamily,会发生什么情况?您确认您的专栏族中存在预期的数据了吗?嗨,DNA,我更新了我的问题以回答您的问题:)我会试试这个,听起来不错(它符合我几小时前在用户组中得到的答案:-))。我将在这里发布正确的代码作为我问题的更新!省略泛型不起作用:-/byte[]-数组的东西看起来不错,完成了一些测试…事实上,这就是ML的答案:-)谢谢你对模板的提示!我没有使用它,因为方法名称中有“节俭”的意思。。。赫克托是个吝啬鬼,所以我觉得这个电话会“肮脏”。。。我会试试看,然后再写一次:-)
QueryResult<CqlRows<String, String, byte[]>>
CqlResult result = executeQuery("select * from ColumnFamily");
for (CqlRow row : result.getRows()) {
System.out.println(new String (row.getKey()));
}