У меня проблемы с доступом к некоторым данным.Я использую YCSB для связи с рядом различных баз данных, таких как Cassandra и MongoDB.
Единственный класс, который я действительно могу изменить, - это мой класс "Workload", который выполняет некоторые вставкии читает.Метод, который я использую для чтения из базы данных, находится в классе:
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,Я не понимаю, почему я не могу получить доступ к его значениям.