2016-03-29 2 views
1

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

?
+0

aktiviert haben Sie eine Kompressions-Codec Karte ausgegeben? –

+0

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)); –

+0

Dies ist vollständige Jobkonfiguration. –

Antwort

1

am Ausgang der Suche es LZO-Kompression scheint gesetzt. Sie können versuchen, einen Blick auf Ihre mapred-site.xml hat und zu sehen, ob diese Eigenschaft gesetzt ist

<property> 
    <name>mapred.map.output.compression.codec</name> 
    <value>com.hadoop.compression.lzo.LzoCodec</value> 
</property> 

Für weitere Informationen: link

+0

oh, yes.Ich fragte unseren hadoop Manager und sie geben mir eine Methode um Daten zu entziffern. Vielen Dank –

Verwandte Themen