繁体   English   中英

HBase MapReduce拆分扫描不同的映射器

[英]HBase MapReduce split scan for different mappers

我正在努力以适当的方式分布我的HBase行,以完成多个地图任务。 我的目的是通过行键拆分我的扫描,并将每个行分配给地图作业。

到目前为止,我只能定义一个扫描,其中我的映射器每次总是获得一行。 但这不是我想要的-我需要设置map-input。

因此,有可能拆分我的HBase表响应。 扫描到n行,然后输入n个映射器?

我不是在寻找一种解决方案来启动MapReduce作业来编写n个文件,而另一个MapReduce作业来重新读取它们作为获取这些集合的文本输入。

提前致谢!

映射器总是一次只能获得一行-如果要与地图侧的多行相关联,这就是map-reduce的工作方式,您可以自己执行操作(例如,使用一些静态变量等),也可以将逻辑写为组合器 ,它是地图端的“减少”步骤。

请注意,您仍然需要一个reducer来处理相关键由不同的映射器处理的极端情况-因为在磁盘上对hbase键进行排序时,您只会在拆分的末尾/开始得到它。 您可以通过预先拆分来降低发生这种情况的风险

仔细研究实现,我看到一次扫描就调用映射步骤,结果恰好使用了一个映射器。 这就是为什么完全不拆分输入集的原因。

使用扫描列表,并将其提供给TableMapReduceUtil.initTableReducerJob函数,在每次扫描时对输入集进行拆分。 因此,可以定义MapReduce作业中使用的映射器的数量。

另一种方法是扩展TableInputFormat类并重写split方法。

正如Arnon Rotem-Gal-Oz所说的那样,在映射器的地图功能中,一次只能访问一行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM