我正在使用Map Reduce框架。MapReduce:將Reducer的結果分組爲固定大小的塊
比方說,這是輸入列表[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P ,Q, R, S, T, U, V, W, X, Y, Z]
和我的映射器產生以下輸出:
<"Key 1" : A>
<"Key 2" : B>
<"Key 3" : C>
<"Key 1" : D>
<"Key 2" : E>
<"Key 3" : F>
<"Key 1" : G>
<"Key 2" : H>
<"Key 3" : I>
<"Key 1" : J>
<"Key 2" : K>
<"Key 3" : L>
<"Key 1" : M>
<"Key 2" : N>
<"Key 3" : O>
<"Key 1" : P>
<"Key 2" : Q>
<"Key 3" : R>
<"Key 1" : S>
<"Key 2" : T>
<"Key 3" : U>
<"Key 1" : V>
<"Key 2" : W>
<"Key 3" : X>
<"Key 1" : Y>
<"Key 2" : Z>
現減速機的輸出通常是這樣的:
<"Key 1" : A, D, G, J, M, P, S, V, Y>
<"Key 2" : B, E, H, K, N, Q, T, W, Z>
<"Key 3" : C, F, I, L, O, R, U, X>
但我想要什麼要做的事情是這樣的:
我想把每個鍵的輸出分成3塊,然後產生t他最終減速器輸出。
所以我想我的減速機的輸出看起來是這樣的:
<"Key 1" : [A, D, G], [J, M, P], [S, V, Y]>
<"Key 2" : [B, E, H], [K, N, Q], [T, W, Z]>
<"Key 3" : [C, F, I], [L, O, R], [U, X]>
任何幫助,將不勝感激由於兩個日以來,我被困在這個問題上。我無法弄清楚最後一部分,即如何將輸出分成3塊。
P.S.如果塊大小小於3(例如最後一個鍵的例子),那麼它很好,但不應該超過3.
不知道,你是什麼意思的3塊是什麼意思?您已經獲得了減速器中每個鍵的數據,您可以隨意輸出。這個塊將成爲一個ArrayList,或者你只需要用'[]'格式化輸出' – gyan
@gyan有一個底層應用程序,讓我們假設它發送一條消息給用戶,批量大小爲3,將消耗Reducer的輸出。 現在Reducer的結果存儲在某個文件中,底層應用程序從文件中選擇一個輸出並對其進行處理。 舉個例子: 應用程序一次只能處理3個ID,所以我們直接提供3個塊的輸出。所以當應用程序選擇一個輸出時,它可以直接處理它。 –
好吧,所以如果我理解正確..你需要輸出像線1 - Key1:A,D,G; 2號線 - Key1:J,M,P。即使數據屬於同一個密鑰,它應該在每行3個塊中最大。如果是這樣,請在查詢中添加正確的格式。 – gyan