最大值查询:设计MapReduce工作找到低于给定的阈值
我试图设计一个查询,以查找网页的现场版本在给定的日期。
该日期作为运行时参数传递。输入到映射器是以下键 - >值对:webpage_id - >REVISION_ID和revision_timestamp。
对于每个webpage_id,作业必须输出的最新REVISION_ID给定日期在此之前发生的页面。
目前的设计:在基准日期后
映射器将丢弃revision_timestamp
任何记录,将输出所有其他记录。
然后,组合器将对给定网页的所有修订进行排序,并仅输出最新的修订(这是通过使用内部数据结构并在组合器的清理阶段发出键值对来完成的)。
减速器与组合器的作用相同,但是在组合器的输出上。
理念:
我要进一步优化工作。我认为用给定网页的映射器处理最新版本更新“全局”变量是个好主意。鉴于此,在映射器输出记录之前,它会检查修订版是否为该网页的“全球最新版”修订版,如果不是,则不会发布修订版。如果是,他会发出记录并更新全局变量。我认为这可以减少通过网络传输的记录数量并加快工作速度。你认为这个想法是否可行,是否有可能提高业绩?
问:
有没有一种方法来创建和更新这些全局变量 - 我读到的ZooKeeper
的特点之一是充当一个key-value存储,但我无法找到的代码示例如何初始化或访问地图任务中的ZooKeeper
记录/变量?
有没有其他方法可以提高我的MapReduce
工作的绩效?