我在访问某些数据时遇到了困难。我正在使用YCSB与许多不同的数据库进行通信,例如 Cassandra 和 MongoDB。
我可以真正修改的唯一类是我的“工作负载”类,它正在执行一些插入和读取。我用来从数据库中读取的方法在类中:
public void doRead(DB db)
{
String keyname = buildKeyName(keynum);
System.out.println(keyname);
HashSet<String> fields = null;
if (!readallfields)
{
// read a random field
String fieldname = "field" + fieldchooser.nextString();
fields = new HashSet<String>();
fields.add(fieldname);
}
db.read(table,keyname,fields,new HashMap<String,ByteIterator>());
}
我试图修改代码,以便可以读取哈希图的内容。我删除了 db.read 行并将其替换为
HashMap<String, ByteIterator> kv_hashmap = new HashMap<String, ByteIterator>();
db.read(table, keyname, fields, kv_hashmap);
然后尝试从 kv_hashmap 中读取:
System.out.println(kv_hashmap.get(fields));
但是db.read 只返回一个 int。DB 是一个我不想修改的公共抽象类,它的目的是与各种数据库通信:
这就是 db.read 所称的:
public abstract int read(String table, String key, Set<String> fields, HashMap<String,ByteIterator> result);
返回,引用javadoc:
成功为零,错误或“未找到”为非零错误代码。
我需要从 kv_hashmap 中读取值。我不明白为什么我不能访问它的值。