问题
我有一些工作只需要迭代HBase表中的每个记录并完成一些任务。例如,提取要导出的字段,或者根据某些新的业务规则更新字段。
推理
MapReduce在这里显得有些过头了。没有什么可以真正映射的,也没有"减少"。地图永远只是钥匙+记录。当然,shuffle和sort没有任何用处,因为它们的密钥保证是HBase唯一的。
出于性能原因,这仍然应该是分布式的。我想我正在寻找一个好的老式扫描表,碰巧是分布式的。
问题
有哪些选项可以利用集群,同时避免完整MapReduce作业的不必要步骤?
协处理器正是为了这个。从链接来看:"一个既灵活又通用的扩展框架,以及直接在HBase服务器进程中进行分布式计算的框架"。
你可以只做地图工作-它会做你想要的事情要获得仅地图作业,可以使用TableMapReduceUtil.initTableMapperJob
辅助方法不设置减速器job.setNumReduceTasks(0);
如果您为扫描指定了一个过滤器,您也可以将一些处理推送到hbase