【发布时间】:2015-02-12 01:28:27
【问题描述】:
查询:
我正在尝试设计一个查询来查找给定日期的网页实时版本。
日期作为运行时参数传递。映射器的输入是以下键 -> 值对:webpage_id -> revision_id 和 revision_timestamp。
对于每个 webpage_id,作业必须输出在给定日期。
当前设计:
映射器将在阈值日期之后丢弃任何带有revision_timestamp 的记录,并输出所有其他记录。
然后,组合器将对给定网页的所有修订进行排序并仅输出最新的修订(这是通过使用内部数据结构并在组合器的清理阶段发出键值对来完成的)。
reducer 与组合器做同样的事情,但在组合器的输出上。
想法:
我想进一步优化工作。我认为使用映射器为给定网页处理的最新版本更新“全局”变量是个好主意。鉴于此,在映射器输出记录之前,它会检查修订版是否是该网页的“全球最新”修订版,如果不是,则不会发出。如果是,他将发出记录并更新全局变量。我认为这可以减少通过网络传输的记录数量并加快工作速度。您认为这个想法是否可行,是否有可能提升性能?
问题:
有没有办法创建和更新这样的全局变量 - 我读到 ZooKeeper 的功能之一是充当键值存储,但我找不到如何初始化或访问 @ 的代码示例987654323@ 地图任务中的记录/变量?
还有其他方法可以提高我的MapReduce 工作的性能吗?
【问题讨论】:
标签: design-patterns hadoop mapreduce apache-zookeeper