一部のデータにアクセスできません。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から値を読み取る必要があります。なぜその値にアクセスできないのかわかりません。