从mapper发出列表

bxpogfeg  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(406)

我正试图从mapper发出一个列表。

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

有什么方法可以发出一个列表或者我应该创建一个 Custom Writable 我的名单。
请建议。
更新
我用arraywritable试过了

  1. public static class ListWritable extends ArrayWritable
  2. {
  3. public ListWritable() {
  4. super(Text.class);
  5. }
  6. }
  7. ListWritable passList = new ListWritable();
  8. ArrayWritable[] data = new ArrayWritable[dummy.size()];
  9. for (int k = 0; k < dummy.size(); k++) {
  10. data[k] = new ArrayWritable(dummy.toArray(new String[dummy.size()]));
  11. }
  12. passList.set(data);
  13. context.write(new Text(""), passList);

但输出显示为

  1. pck.Driver$ListWritable@75e287e5

我做错什么了吗

voase2hg

voase2hg1#

将整个列表保存在内存中并一次性发送可能是危险的,而且不可扩展。除非你有一个强烈的要求,发出一个完整的列表 string 在一个镜头中,我宁愿在Map器中实现一个循环,并发射每个循环 String 个别地。

irlmq6kh

irlmq6kh2#

为此,可以使用已实现的arraywritable。或者看看其他实现可写接口的类。

相关问题