我正在使用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();
1条答案
按热度按时间pengsaosao1#
如果您知道密钥的确切值,则不需要进行扫描,您可以执行get,这应该是非常高效的。
当你触发的时候要花很长时间
next
是因为每一个电话next
是一个RPC
拜访HBase
)就其本身而言,您可以使用setcaching在一次访问中获得一定数量的行HBase
.