首页 > 解决方案 > 从 HBASE 表中查询大量数据时 Result 对象的大小

问题描述

我正在尝试使用行键查询 hbase 表。我们有以下结构

当我尝试查询 hbase 时,我必须使用带有一些过滤器的扫描来扫描第一个索引表的行键,这将导致字节数组。(行键)。一旦我们获得了行键,我们就会在 Table 对象中调用 listofGets()。一旦获得,我们将迭代对象并准备一个包含压缩 json 对象的列表。在这里,我们不确定对象的大小和数量。如果对象数量很大,我们可能会导致 OOM。我们是否有任何选项可以返回迭代器或缓冲结果,以避免 OOM。

for (byte[] rowkey : indexTableOutput)
{
    Get get = new Get(rowkey).addFamily(Bytes.toBytes(columnFamilty)).setMaxVersions(MAX_VERSIONS);
    listOfget.add(get);
}

上面的代码用于从索引表中检索键。

TableName tableName = TableName.valueOf("table1");
Table tableObj = conn.getTable(tableName);
Result[] results = tableObj.get(listOfget);

从上面的代码中,我们有几个查询。任何帮助,将不胜感激。

我可以找到一个结果扫描器正在返回扫描对象。但是找不到获取列表的任何其他选项。在这里,我们知道索引表中的确切键。

标签: javahadoophbasemapr

解决方案


推荐阅读