2015-04-30 30 views
1

嘗試使用 AvroMultipleOutputs將輸出寫入兩個不同的命名輸出文件,但在日誌中獲得空文件並且沒有錯誤。計數器顯示正確的記錄數。當寫入單個文件時,這個 也可以正常工作。AvroMultipleOutputs在日誌中創建空文件沒有錯誤

的Avro版本1.7.1

代碼

Job job = new Job(config, "AVRO_MULTITEST"); 
job.setJarByClass(AvroMultiWriter.class); 

FileInputFormat.setInputPaths(job, new Path(args[0])); 
FileOutputFormat.setOutputPath(job, new Path(args[1])); 

job.setInputFormatClass(TextInputFormat.class); 
job.setOutputFormatClass(AvroKeyValueOutputFormat.class); 
job.setMapperClass(AvroMultiWriteMapper.class); 
job.setNumReduceTasks(0); 


AvroJob.setOutputKeySchema(job, Schema.create(Schema.Type.STRING)); 
AvroJob.setOutputValueSchema(job, Schema.create(Schema.Type.STRING)); 
AvroJob.setMapOutputKeySchema(job, Schema.create(Schema.Type.STRING)); 
AvroJob.setMapOutputValueSchema(job, Schema.create(Schema.Type.STRING)); 

AvroMultipleOutputs.setCountersEnabled(job, true); 
AvroMultipleOutputs.addNamedOutput(job,"F1", 
     AvroKeyValueOutputFormat.class, Schema.create 
(Schema.Type.STRING),Schema.create(Schema.Type.STRING)); 

AvroMultipleOutputs.addNamedOutput(job,"F2", 
     AvroKeyValueOutputFormat.class, Schema.create 
(Schema.Type.STRING),Schema.create(Schema.Type.STRING)); 

LazyOutputFormat.setOutputFormatClass(job, AvroKeyValueOutputFormat.class); 

工作計數器

mapred.JobClient: org.apache.avro.mapreduce.AvroMultipleOutputs 
mapred.JobClient:  F1=3 
mapred.JobClient:  F2=3 

回答

0

您是否嘗試過在映射類的close()方法調用multipleOutputs.close()