如何拆分Map的输入文本(Hadoop)?

时间:2017-01-04 15:58:27

标签: java hadoop

我想知道如何在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.

1 个答案:

答案 0 :(得分:0)

你正在编写一个数组split-en的长度\n,它总是一个用于提供的数据。地图输入始终是文本数据的新行......

重构您的代码:

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())));
    }