bekomme ich die Ausgabe nur wollen, dass der Wert, so dass ich verwenden NullWritable als OutputKeyClass, wie folgt aus:Verwendung NullWritable als OutputKeyClass, aber ich habe nicht das erwartete Ergebnis
protected void reduce(Text key, Iterable<Text> values,
Reducer<Text, Text, NullWritable, Text>.Context context)
throws IOException, InterruptedException {
for(Text value : values){
context.write(NullWritable.get(), value);
}
}
und ich gesetzt Job wie folgt aus:
job.setNumReduceTasks(1);
job.setOutputKeyClass(NullWritable.class);
job.setOutputValueClass(Text.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(baseInPath));
FileSystem.get(conf).delete(new Path(baseOutPath), true);
FileOutputFormat.setOutputPath(job, new Path(baseOutPath));
System.exit(job.waitForCompletion(true) ? 0 : 1);
Aber wenn ich den Ergebnispfad überprüfen, habe ich das. LZO
`@ V/Z0 |! Res | 1 *" | 33260580217607 | 2 | 1 | 0,2 | 23 | 2016.03.28 13.57.42 0 | pay 6-03-28 13:57:42
die Zeichenfolge mit 0 beginnen | res | 1 ...... ist Wert, aber es gibt auf der Vorderseite einige verstümmelte ich denke, sie der Zeiger von NullWritable sind Wie kann ich.. entfernen Sie diese verstümmelt? ist mein Code richtig
?
aktiviert haben Sie eine Kompressions-Codec Karte ausgegeben? –
Job job = neuer Job (conf, "shop_re_pay"); \t \t job.setInputFormatClass (TextInputFormat.class); \t \t job.setJarByClass (ShopRepayJob.class); \t \t job.setMapperClass (FailPayMap.class); \t \t job.setReducerClass (FailPayReduce.class); \t \t job.setNumReduceTasks (1); \t \t job.setOutputKeyClass (NullWritable.class); \t \t job.setOutputValueClass (Text.class); \t \t job.setMapOutputKeyClass (Text.class); \t \t job.setMapOutputValueClass (Text.class); \t \t FileInputFormat.addInputPath (Job, neuer Pfad (baseInPath)); \t \t FileSystem.get (conf) .delete (neuer Pfad (baseOutPath), true); \t \t FileOutputFormat.setOutputPath (Job, neuer Pfad (baseOutPath)); –
Dies ist vollständige Jobkonfiguration. –