我已經使用python streaming(僅具有mapper函數實現)編寫了mapreduce代碼,並使用happybase從Hbase讀取。 當我在5節點發行版中運行mapreduce代碼時,由於python流代碼具有掃描功能,該功能從hbase讀取記錄並分佈在整個集羣中,所有創建的映射器實例正在從提取/讀取的相同數據集上進行處理hbase。Python Mapreduce在從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等.... 我如何在使用快樂基的python流中實現這一點? 任何人都可以請幫忙。 謝謝!
han058:無論您提到的是我的要求,但其他映射器實例如何表明m2將知道它必須掃描101到201條記錄的表,即預結果和m3從202到n,因爲我的映射減少代碼我提到row_start從1開始並部署代碼。我在hbase表中有超過一百萬條記錄。 – 2014-09-29 05:47:21