2016-05-27 4 views
0

In Hadoop-Programm habe ich versucht, die Karte Ergebnis zu komprimieren, ich den folgenden Code geschrieben:Compress Karte Ausgabeergebnis Ausnahme in hadoop Programm

conf.setBoolean("mapred.compress.map.output",true); 
conf.setClass("mapred.map.output.compression.codec",GzipCodec.class,CompressionCodec.class); 

und führen Sie es, ich habe die unten Ausnahme bekam, weiß jemand den Grund ?

WARN mapred.LocalJobRunner: job_local1149103367_0001 
java.io.IOException: not a gzip file 
at org.apache.hadoop.io.compress.zlib.BuiltInGzipDecompressor.processBasicHeader(BuiltInGzipDecompressor.java:495)  
at org.apache.hadoop.io.compress.zlib.BuiltInGzipDecompressor.executeHeaderState(BuiltInGzipDecompressor.java:256) 
at org.apache.hadoop.io.compress.zlib.BuiltInGzipDecompressor.decompress(BuiltInGzipDecompressor.java:185) 
at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:91) 
at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:85) 
at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:72) 
at java.io.DataInputStream.readByte(DataInputStream.java:265) 
at org.apache.hadoop.io.WritableUtils.readVLong(WritableUtils.java:308) 
at org.apache.hadoop.io.WritableUtils.readVInt(WritableUtils.java:329) 
at org.apache.hadoop.mapred.IFile$Reader.positionToNextRecord(IFile.java:400) 
at org.apache.hadoop.mapred.IFile$Reader.nextRawKey(IFile.java:425) 
at org.apache.hadoop.mapred.Merger$Segment.nextRawKey(Merger.java:323) 
at org.apache.hadoop.mapred.Merger$MergeQueue.merge(Merger.java:613) 
at org.apache.hadoop.mapred.Merger$MergeQueue.merge(Merger.java:558) 
at org.apache.hadoop.mapred.Merger.merge(Merger.java:70) 
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:385) 
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:445) 

heute, ich getestet es wieder, ich gefunden, wenn die die 2 Zeilen setzen, bevor das Job-Objekt erstellt wurde,

Job job = new Job(conf, "MyCounter"); 

der Fehler passiert, wenn danach wird kein Fehler auftritt Warum passiert das?

Antwort

0

verwenden Sie MRv1 oder MRv2. Wenn Sie MRv2 verwenden, verwenden Sie die folgende Jobkonfiguration. NONE | | RECORD gibt drei Arten von Kompression

config.setBoolean("mapreduce.output.fileoutputformat.compress", true); config.setClass("mapreduce.output.fileoutputformat.compress.codec",GzipCodec.class,CompressionCodec.class);

zusätzlich Sie

config.set("mapreduce.output.fileoutputformat.compress.type",CompressionType.NONE.toString());

BLOCK einstellen.

+0

Können Sie meine Bearbeitung sehen? – Coinnigh

Verwandte Themen