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



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

示例:

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

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

在happybase中,使用扫描,row_start表示决定开始行键

所以若startrows相同,那个么结果集也将相同。

如果您想获得下一个集合,您必须将row_start设置为预结果的最后一行关键字

像下面的

  1. 第一次扫描:row_start=1result=[1:101]last_row=101Somecompute(1 ~ 100)
  2. 第二次扫描:row_start=101result=[101:201]last_row=201Somecompute(101 ~ 200)
  3. 第三次扫描:

我希望它会有所帮助。

相关内容

最新更新