我正在使用KeyValueTextInputFormat来读取/处理逗号分隔的文件:
但是我得到了键中的所有值,即使将分隔符指定为逗号(,),值字段也将变为null。它不是在选择分隔符,不确定是什么问题,这是我的驱动程序代码:
Configuration conf = new Configuration();
conf.set("key.value.separator.in.input.line", ",");
Job job = new Job(conf, "citation data");
job.setJarByClass(Citation.class);
job.setJobName("citation data");
job.setMapperClass(MapClass.class);
job.setReducerClass(ReduceClass.class);
job.setInputFormatClass(KeyValueTextInputFormat.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
KeyValueTextInputFormat.addInputPath(job, new Path("input/sample.txt"));
FileOutputFormat.setOutputPath(job, new Path("output2"));
System.exit(job.waitForCompletion(true)?0:1);
最佳答案
对我来说,它工作得很好。在我的mapred代码之一中,我只是更改了以下内容,并且有效:
KeyValueTextInputFormat
conf.set("key.value.separator.in.input.line", ",");
Mapper<Text,Text,K,V>
,这会使map()方法的签名像这样:不需要其他更改,您必须获取第一列的数据作为键,第二列的数据作为值。
我想您可能唯一想念的是第3点。
关于configuration - KeyValueTextInputFormat逗号分隔符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14992627/