从Mapper发出一个列表

时间:2014-02-17 09:19:54

标签: java hadoop mapreduce

我正在尝试从Mapper中发出一个List。

List<String> mapFinalList = new ArrayList<String>();

有没有办法发出一个List,或者我应该为我的List创建一个Custom Writable

请建议。

更新

我使用ArrayWritable

尝试了它
public static class ListWritable extends ArrayWritable
{
  public ListWritable() {
  super(Text.class);
  }
}
ListWritable passList = new ListWritable();
ArrayWritable[] data = new ArrayWritable[dummy.size()];
for (int k = 0; k < dummy.size(); k++) {
   data[k] = new ArrayWritable(dummy.toArray(new String[dummy.size()]));
}
passList.set(data);
context.write(new Text(""), passList);

但是将输出显示为

pck.Driver$ListWritable@75e287e5

我做错了什么

2 个答案:

答案 0 :(得分:3)

您可以将已实施的ArrayWritable用于此目的。或者看看实现可写接口的other classes

答案 1 :(得分:1)

将整个列表保存在内存中并一次性发送它可能是危险且不可扩展的。除非你强烈要求一次性发出string的整个列表,否则我宁愿在映射器中实现一个循环,并单独发出每个String