我想知道如何在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.
答案 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())));
}