在 scan.setCaching(cacheRow) 中设置更高值时,Hbase 扫描不返回所有行

标签 hbase

    Scan s = new Scan();
    s.addFamily(Bytes.toBytes("cf1"));
    s.setCaching(cacheRows);
    s.setCacheBlocks(false);
    s.setStartRow("30.0.2.2\01441756800\0");
    s.setStopRow("30.0.2.3\01441756800\0");

    ResultScanner scanner = table.getScanner(s);

    long rows = 0;
    try {
        for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
            rows++;
        }
    } finally {
        scanner.close();
    }

    System.out.println("Total no of rows = " + rows);

当我使用 cacheRows = 100 或 10000 运行上面的代码时,它会打印
总行数 = 480000

当我使用 cacheRows = 100000 运行上面的代码时,它会打印
总行数 = 10090

cacheRows = 10083 打印 480000

cacheRows = 10084 打印 191595

cacheRows = 10085 打印 20169

cacheRows = 10086 打印 20170

cacheRows = 10087 打印 20171

cacheRows = 10088 打印 20172

cacheRows = 10089 打印 20173

cacheRows = 10090 打印 20174

cacheRows >= 10091 打印 10090

最佳答案

通过在 hbase-site.xml 中设置相同的 hbase.server.scanner.max.result.size 和 hbase.client.scanner.max.result.size 或通过在扫描对象值中设置 setMaxResultSize 等于 100000(缓存行参数)行,在我的例子中是 20971520 (20MB)
更多细节请查看错误:HBASE-13527

关于在 scan.setCaching(cacheRow) 中设置更高值时,Hbase 扫描不返回所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32649885/

相关文章:

memory-management - Hbase 响应大小

hadoop - HBase UI不显示任何区域服务器

java - 将java代码从hbase 0.92迁移到0.98.0-hadoop2

Java 进程在 GC 之前停止

hbase - 当要检查的行与 Put 的行不同时,checkAndPut 在什么情况下有用?

java - HBase MapReduce中的Nullpointer异常

hbase - 在 Hbase 中为大型扫描禁用 block 缓存

java - 我如何解析一个csv文件到一个表中的apache hbase?

HBase 支持 RowKey 中的通配符

hadoop - Hbase 中的区域拆分