java - 获取 Hbase 中特定行的所有列值

标签 java hbase

我想获取 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/

相关文章:

hadoop - 如何使用 Pig 和 HBaseStorage 存储到 HBase

hadoop - Hbase 中的多行突变

java - 在 JSch 中使用 SSH "exec" channel 执行 sudo

java - 如何检查天气字符串是否包含反斜杠?

java - 让Java中的方法返回在内部类中初始化的变量

java - 如何找出 spring 托管 bean 的范围

java - 改变非线程安全集合

sql-server - 列存储索引与列式数据库

hbase - 如何在 apache phoenix 中导出表模式?

hadoop - 由于主机名别名,HBase on docker NotServingRegionException