avromultipleoutputs创建空文件日志中没有错误

rn0zuynd  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(266)

尝试使用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
polkgigr

polkgigr1#

你打过电话吗 multipleOutputs.close()close() Map器类的方法?

相关问题