Hbase crud API

1、查询操作

情景一:根据前缀查询所有符合要求的rowkey,并将每个rowkey列名和值封装成map放到一个List里面
代码如下

Table table = connection.getTable(TableName.valueOf("xjbank:manageMoney"));

            Scan scan=new Scan();
            scan.setFilter(new PrefixFilter(Bytes.toBytes(customerId)));
            ResultScanner scanner = table.getScanner(scan);
            Map map=new HashMap<>();
            List> list=new ArrayList<>();
            Result result=null;

            while(null!=(result=scanner.next())){
                map.clear();
                for(Cell cell:result.rawCells()){
                    String value=Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());
                    String column=Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());
                    map.put(column,value);
                }
                list.add(map);
            }

其中从result中提取列名和值的操作尤为注意

  String value=Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());
  String column=Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());

// cell.getRowArray() 得到数据的byte数组
// cell.getRowOffset() 得到rowkey在数组中的索引下标
// cell.getRowLength() 得到rowkey的长度
// 将rowkey从数组中截取出来并转化为String类型

参考资料:http://blog.51cto.com/quenlang/1572013

你可能感兴趣的:(Hbase crud API)