pythonmapreduce在从hbase读取的重复数据上运行

q43xntqr  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(313)

我已经使用python流(只有mapper函数实现)编写了一个mapreduce代码,并使用happybase读取hbase。当我在5节点分布中运行mapreduce代码时,因为python流式代码具有从hbase读取记录的扫描功能,并且分布在整个集群中,所以创建的所有Map器示例都在从hbase提取/读取的相同数据集上处理。
例子:

for key, data in table.scan(row_start='1'):

    Somecompute( key, data)

这里,如果我在hbase中有100行,那么集群中生成的所有Map器示例都在处理来自hbase的100条记录,因为它在分发中执行相同的Map器代码。我的要求是m1Map器应该处理1到20条记录,m2Map器应该处理21到40条记录,m3应该处理41到60条记录等等。。。。如何使用happy base在python流媒体中实现这一点?有人能帮忙吗。谢谢!!

gcuhipw9

gcuhipw91#

在happybase中,使用scan, row_start 表示决定起始行键。
所以如果起始行相同,那么结果集将相同。
如果要获取下一个集合,必须将行\开始设置为pre result的最后一行键
就像下面一样
第一次扫描: row_start=1 , result=[1:101] , last_row=101 以及 Somecompute(1 ~ 100) 第二次扫描: row_start=101 , result=[101:201] , last_row=201 以及 Somecompute(101 ~ 200) 第三次扫描:。。。。
我希望这会有帮助。

相关问题