2013-05-06 75 views
4

我與有我第一步的4 MapReduce的steps.the輸出程序的工作是:如何在地圖中對數據進行排序減少hadoop?

id  value 
1  20 
2   3 
3   9 
4  36 

我約1,000,000 ID和在第二步中,我必須解決這一步的values.the輸出:

id  value 
4  36 
1  20 
3   9 
2   3 

如何在map reduce中對數據進行排序?我需要使用terasort嗎?如果是的話,我如何在我的程序的第二步中使用terasort? 謝謝。

+0

你是指4個mapreduce步驟是什麼意思?您正在運行地圖步驟和減少步驟4次?如果您正在編寫MapReduce程序,那麼您可以控制「地圖步驟」和「縮小」步驟。 – prashantsunkari 2013-05-06 15:59:31

+0

@prashantsunkari不,我有4個步驟,在他們每個人都有一個地圖和減少功能。每一步都做不同的工作。第二步必須對第一步的輸出進行排序。 – user1878364 2013-05-06 17:22:11

+0

mapreduce最大的優勢之一就是根據您的密鑰對數據進行排序。你想根據什麼來排序? – smttsp 2013-05-06 18:44:43

回答

1

如果您想根據value's進行排序,請將其設爲key in map函數。即

id  value 
1  20 
2   3 
3   9 
4  36 
5   3 

(值)(密鑰)的地圖功能

output will be 

key  value 
3   5 
3   2 
9   3 
20  1 
36  4 

map<value, id> output key/value 
reduce <value, id> 
如果你想ID是第一列

,這將工作。

context.write(value,key);

請注意,身份證不會被排序