所以你的问题是非常类似于经典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