我试图在一个简单的MapReduce-Task中从ArrayWritable获取输出.我发现了几个有类似问题的问题,但我无法在自己的代码中解决问题.所以我期待着你的帮助.谢谢 :)!
输入:带有一些句子的文本文件.
输出应该是:
<Word, <length, number of same words in Textfile>>
Example: Hello 5 2
Run Code Online (Sandbox Code Playgroud)
我在工作中得到的输出是:
hello WordLength_V01$IntArrayWritable@221cf05
test WordLength_V01$IntArrayWritable@799e525a
Run Code Online (Sandbox Code Playgroud)
我认为问题出在IntArrayWritable的子类中,但我没有得到正确的修正来解决这个问题.由我们有Hadoop 2.5.我使用以下代码来获得此结果:
主要方法:
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word length V1");
// Set Classes
job.setJarByClass(WordLength_V01.class);
job.setMapperClass(MyMapper.class);
// job.setCombinerClass(MyReducer.class);
job.setReducerClass(MyReducer.class);
// Set Output and Input Parameters
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntArrayWritable.class);
// Number of Reducers
job.setNumReduceTasks(1);
// Set FileDestination
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? …
Run Code Online (Sandbox Code Playgroud)