我已经使用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流媒体中实现这一点?有人能帮忙吗。谢谢!!
1条答案
按热度按时间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)
第三次扫描:。。。。我希望这会有帮助。