所以你的問題是非常類似於經典WordCount的例子。在你的情況下,雖然你不想發出總和,但只是一次性的價值。至於數據結構本身,它已經存在於數據結構中,即Iterable中,因此不需要將它們添加到新的數據結構中。你真正想做的只是以你需要的任何形式打印出來。下面我將解釋我認爲你需要整個項目的內容。
對於映射器,您想要標識映射器,您希望輸出鍵值對,確切如何讀取它。可以使用Identity Mapper完成,或者如果您使用新的API,則不需要指定一個,0.23+。
對於Reducer,你應該做類似於下面的事情。這只是簡單地將給定鍵的值附加了您想要的逗號,正如我之前提到的,您不需要將它們放入新的數據結構中,因爲它們已經在一箇中。一旦減速器完成附加一個鍵的值,那麼它只是發出帶有逗號分隔值的鍵。
@Override
public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (Text value: values){
if (!first) sb.append(", ");
else first = false;
sb.append(value);
}
context.write(key, new Text(sb.toString()));
}
你想文本輸出,或東西,你要開始的過程 - 即你想要一個序列文件(如果文本然後@greedybuddha目前的答案是可以接受的) – 2013-05-06 01:52:23
我做了一些進展開始策劃,但目前,文本表示沒問題。 – 2013-05-06 17:09:01