对于要分割这样的文本:
1,2
1,3
2,4
.......
需要使用hadoop的KeyValueTextInputFormat,于是乎就要配置:
Configuration conf = new Configuration();
Job job = new Job(conf,"MyJob");
conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", ",");
job.setInputFormatClass(KeyValueTextInputFormat.class);
重点是红色部分代码,配置这两个地方就可以,这是hadoop1.0的配置方法
但是很多书上写的都是
jobConf.set("key.value.separator.in.input.line", ",");
job.setOutputFormatClass(TextOutputFormat.class);
很多书上都是这么写的,因为这是旧的api,网上也有很多同学问 为什么KeyValueTextInputFormat 无法分割,
对于hadoop 1.0 要用mapreduce.input.keyvaluelinerecordreader.key.value.separator
hadoop 0.2 要用 key.value.separator.in.input.line
不一样的!
吐槽下:话说我也卡在这里快半个小时了,多亏stackoverflow, 最近学校网速不给力,上stackoverflow这种网站真慢,还怎么学习!