我正在尝试从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
我做错了什么
答案 0 :(得分:3)
您可以将已实施的ArrayWritable用于此目的。或者看看实现可写接口的other classes。
答案 1 :(得分:1)
将整个列表保存在内存中并一次性发送它可能是危险且不可扩展的。除非你强烈要求一次性发出string
的整个列表,否则我宁愿在映射器中实现一个循环,并单独发出每个String
。