最大值查詢:設計MapReduce工作找到低於給定的閾值
我試圖設計一個查詢,以查找網頁的現場版本在給定的日期。
該日期作爲運行時參數傳遞。輸入到映射器是以下鍵 - >值對:webpage_id - >REVISION_ID和revision_timestamp。
對於每個webpage_id,作業必須輸出的最新REVISION_ID給定日期在此之前發生的頁面。
目前的設計:在基準日期後
映射器將丟棄revision_timestamp
任何記錄,將輸出所有其他記錄。
然後,組合器將對給定網頁的所有修訂進行排序,並僅輸出最新的修訂(這是通過使用內部數據結構並在組合器的清理階段發出鍵值對來完成的)。
減速器與組合器的作用相同,但是在組合器的輸出上。
理念:
我要進一步優化工作。我認爲用給定網頁的映射器處理最新版本更新「全局」變量是個好主意。鑑於此,在映射器輸出記錄之前,它會檢查修訂版是否爲該網頁的「全球最新版」修訂版,如果不是,則不會發布修訂版。如果是,他會發出記錄並更新全局變量。我認爲這可以減少通過網絡傳輸的記錄數量並加快工作速度。你認爲這個想法是否可行,是否有可能提高業績?
問:
有沒有一種方法來創建和更新這些全局變量 - 我讀到的ZooKeeper
的特點之一是充當一個key-value存儲,但我無法找到的代碼示例如何初始化或訪問地圖任務中的ZooKeeper
記錄/變量?
有沒有其他方法可以提高我的MapReduce
工作的績效?