[英]How to Create Global Variable in Java Implementation of Hadoop MapReduce?
現在我想創建一個全局雙變量(成員),可以由MapReduce作業中的每個映射器/縮減器訪問和更改。 起初我試圖在我的主java文件中聲明一個靜態double成員,但它似乎有問題,因為每個mapper / reducer在一個單獨的JVM上運行,並且可以正確地更改和訪問該成員。
我知道對於int變量有counter
制機制。 但是如果我想創建一個全局雙變量,我該怎么做呢?
我的最終目標是總結所有映射器/縮減器中的雙重格式。 如果我不能或不應該創建全局變量,還有其他方法可以實現這個目標嗎?
這些雙打來自哪里? 如果它們在輸入數據中,則可以將其作為普通MR作業。 讓您的映射器始終輸出相同的鍵,以及要求的值。 使用組合器在每個映射器中進行本地求和。 然后只使用一個減速器,讓它簡單地發出總和。
“全局”狀態正是Map-Reduce范式試圖避免的。 您必須嘗試將所有內容都考慮為在單獨的映射器中執行不同的工作部分,然后在reducers中進行組合/聚合。
實際上你可以像整數一樣對待。 您可以將任何雙倍乘以100000並將其存儲在計數器中。 在減速機中,如果需要,只需除以100000。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.