我想获取 hbase 中特定行的不同列族下的所有列,下面是我尝试使用 getFamilyMap 实现的代码。它生成一个以 byte[] 作为键和值的 navigablemap。但是当我尝试执行entries.getValue()时,我没有得到任何数据。
Table table = connection.getTable(TableName.valueOf(tableName));
Get getVal = new Get(Bytes.toBytes(input));
// Reading the data
Result result = table.get(getVal);
NavigableMap<byte[], byte[]> byteMap = result.getFamilyMap(cfName.getBytes());
for(Map.Entry<byte[],byte[]> entries: byteMap.entrySet()){
byte[] temp = entries.getKey();
byte[] value = entries.getValue();
logger.debug("key:: "+Bytes.toString(temp));
logger.debug("Value:: "+Bytes.toString(byteMap.get(value)));
}
但是如果我提供下面的代码,我确实会得到 key 和值。请让我知道这两个代码有什么区别以及 map 的值如何受到影响?
for(byte[] map : byteMap.keySet()){
logger.debug("key:: "+Bytes.toString(map));
logger.debug("Value:: "+Bytes.toString(byteMap.get(map)));
}
最佳答案
查看失败示例的这些行:
byte[] value = entries.getValue();
logger.debug("Value:: "+Bytes.toString(byteMap.get(value)));
您已经获得了 byte[]
形式的值,因此您无需从 byteMap
中检索任何内容。事实上,byteMap
中不会有与该值相对应的键。您需要记录的只是:
logger.debug("Value:: "+Bytes.toString(value));
关于java - 获取 Hbase 中特定行的所有列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48997226/