簡體   English   中英

如何過早終止MrJob減速器?

[英]How to prematurely terminate MrJob reducer?

我想使用MapReduce篩選滿足某些條件的稀有實體的龐大數據集。 一旦減速器違反了標准,我可以終止它們,從而大大加快速度,因為它們將在我不感興趣的實體上進行計算。

舉一個例子,假設我有一個包含數十億篇文章的語料庫,而我只想返回少於100個單詞的文章。 絕大多數文章的詞數均大於100,000,因此我可以通過在滿足停止條件(word_count> 100)時終止reduce來跳過大部分工作。

這不會終止減速器,但會阻止它接收任何新作業。 它通過將一些功能作為類字典進行維護來工作:

from mrjob.job import MRJob    

class Mr_Count_Words(MRJob):
    feature_counts = {}

    def mapper(self, _, line):
            ...

然后,您可以在某處計算特征並檢查字典以查看是否收斂:

try:
    self.feature_counts[feature_name] += 1
except KeyError:
    self.feature_counts[feature_name] = 1

if self.feature_counts[feature_name] > feature_thresh:
    return None
else:        
    yield ('feature_name', 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM