【问题标题】:AvroMultipleOutputs creates empty file no error in logsAvroMultipleOutputs 创建空文件,日志中没有错误
【发布时间】:2015-04-30 01:16:23
【问题描述】:

尝试使用将输出写入两个不同命名的输出文件 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

【问题讨论】:

    标签: hadoop mapreduce avro


    【解决方案1】:

    您是否尝试过在映射器类的close() 方法中调用multipleOutputs.close()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 2020-05-14
      • 2021-11-06
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      相关资源
      最近更新 更多