如何分割Map的输入文本(hadoop)?

nxowjjhe  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(301)

我想知道如何在map方法(hadoop)中拆分输入文本。
我的输入文件如下:

aaaa
aaaa
aaaa
aaaa
aaaa

当我运行此代码时:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
        String[] lines = value.toString().split("\\n");
            paire.set("hi");
            one.set(lines.length);
            context.write(paire,one);
    }
}

输出为:

hi	1
hi	1
hi	1
hi	1
hi	1

我不知道为什么lines.length等于1而不是5。

oalqel3c

oalqel3c1#

您正在写入一个数组的长度,该数组被 \n 对于所提供的数据,这将始终是一个。Map的输入总是文本数据的新行。。。
重构代码:

public void map(Object key, Text value, Context context) throws IOException, InterruptedException{
            //System.out.println("hi " + value.getLength());
            context.write(new Text("hi"), new Text(String.valueOf(value.getLength())));
    }

相关问题