我是MapReduce的新手,並希望您對以下任務的最佳MapReduce方法有所意見。MapReduce來計算對的出現次數
我有一個大型文檔格式
1 2 3
2
2 3 4 5
每一行都有編號的列表。我想在任何一行中列出每個可能的(對)數字組合。我想要包含每個給定對的行數。
,結果會是怎樣
element1 element2 occurrences
1 1 1
1 2 1
1 3 1
2 2 3
2 3 2
3 3 2
3 4 1
3 5 1
大約有2M線路中的文件,以及約1.5M不同的數字。將會有大約2.5G不同的數字對被計數。
的挺直向前僞代碼是這樣的: 調用的地圖每行的文件
Map(int lineId, list<int> elements)
{
for each pair of integers in elements
emit(pair, 1)
}
Reduce((int, int) pair, list<int> counts)
{
return sum(counts)
}
在但這種方法需要2M映射器和2.5G減速。這是一種合理的方式嗎? 計劃在Azure上嘗試Hadoop。
什麼是單位「G」?通常情況下,您將#of文件作爲mappers和一個reducer的數量。 –
M = 10^6。 G = 10^9。因此,如果我使用列出的僞代碼,我將擁有2,000,000個映射器和2,500,000,000個reducer。 – user628904
什麼?你認爲它會爲每條記錄產生一個映射器嗎?它將爲每個64mib塊啓動一個映射器,具體取決於可能的塊大小。您可以手動設置減速器的數量,您應該爲大約1gb的數據分配一個減速器。你的情況我沒有看到2mio映射器。 –