首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HBase分布式扫描仪

HBase分布式扫描仪
EN

Stack Overflow用户
提问于 2009-07-13 10:20:09
回答 2查看 1.6K关注 0票数 3

在HBase文档中关于“入门”页面的"API使用示例“中,有一个扫描仪使用的示例:

扫描器=table.getScanner(新的String[]{“myColumn族:columnQualifier1 1”});

RowResult rowResult = scanner.next();while (rowResult != null) {//.rowResult = scanner.next();

}

据我所知,这段代码将在一台计算机(名称节点)上执行,并且所有的扫描和过滤工作都不会被分发。只有数据存储和数据加载才会被分发。如何使用分布式扫描器,它将在每个节点上单独工作。

快速数据过滤的最佳实践是哪一个?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-12-20 20:13:31

无论如何,这是旧的:扫描器只是一个用于检索计算结果的类似游标的api。对于计算,可以使用MapReduce作业(hbase.mapred)。

票数 1
EN

Stack Overflow用户

发布于 2013-02-27 20:01:16

扫描仪的工作方式是从第一个区域开始,扫描行并从一个区域跳到下一个区域。您可以做的一个技巧是创建多个扫描器,每个扫描器在一个区域的开始键和结束键上开始和结束,然后创建多个线程,这些线程并行读取并写入一个输出队列。现在,您的流程需要足够快地从队列中读取、处理和移除项目,否则您可能会对客户端进行OOM,以防太多行进入太快。您还需要使用并发结构来避免同步延迟。

可以使用getRegionLocations检索HTable:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#getRegionLocations()上的区域信息

另外,请记住,如果读取不够快,扫描器可能会超时,因此阻塞使用者线程直到队列变为空可能不是一种选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1118676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档