使用hbase作为键值存储,需要使用java提取一个值

wr98u20j  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(186)

我正在使用hbase作为键值存储,在这里我们有一个列族,只有一个值。java过滤器在不到一秒钟的时间内获取该行,但在尝试检索该值时需要15秒。如果有人能调查一下,给我指点一下,那会很有帮助的。代码如下:-

Scan scan1 = new Scan();
        scan1.addColumn(Bytes.toBytes("column_family"), Bytes.toBytes("column_name"));
        Filter filter1 = new RowFilter(CompareFilter.CompareOp.EQUAL,
          new BinaryComparator(Bytes.toBytes("hashvalue")));
        scan1.setFilter(filter1);
        long startTime = System.nanoTime();
        ResultScanner scanner1 = table.getScanner(scan1);
        System.out.println(scanner1.next().getColumnLatestCell(Bytes.toBytes("column_family"), Bytes.toBytes("column_name")));            
        long endTime = System.nanoTime();
        double seconds = (double)(endTime - startTime) / 1000000000.0;
        System.out.println("Scan with row key using scan: " + seconds);            
        scanner1.close();
pengsaosao

pengsaosao1#

如果您知道密钥的确切值,则不需要进行扫描,您可以执行get,这应该是非常高效的。

Result result = table.get(Bytes.toBytes("hashvalue"))

当你触发的时候要花很长时间 next 是因为每一个电话 next 是一个 RPC 拜访 HBase )就其本身而言,您可以使用setcaching在一次访问中获得一定数量的行 HBase .

相关问题