一个作业输出到多个文件

edqdpe6u  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(483)

我有一个Map和减少作业运行。我想将一些数据输出到一个文件,并在作业中将一些数据输出到另一个文件。如何实现。请帮助我,因为我是新的hadoopMap减少。有人能举个例子吗?

btxsgosb

btxsgosb1#

有一个 OutputFormat 调用的类 MultipleOutputFormat 可以用来代替默认值 TextOutputFormat .
如文件所述:
这个抽象类扩展了fileoutputformat,允许将输出数据写入不同的输出文件。这个类有三个基本用例。案例一:这个类用于至少有一个reducer的map reduce作业。reducer希望根据实际的键将数据写入不同的文件。假设键(或值)对实际键(值)和实际键(值)的所需位置进行编码。第二种情况:这个类用于只Map的作业。作业希望使用一个输出文件名,该输出文件名要么是输入数据的输入文件名的一部分,要么是输入数据的某个派生项。第三种情况:这个类用于只Map的作业。作业希望使用一个同时依赖于键和输入文件名的输出文件名。
因为这是一个抽象类,所以很可能需要使用它的一个实现 MultipleTextOutputFormat .
不同的方式 OutputFormatTextOutputFormat 通过在创建和配置作业时指定它来使用:

Configuration conf = this.getConf();
Job job = Job.getInstance(conf, "job-name");
job.setJarByClass(this.class);
job.setMapperClass(mapper.class);
job.setCombinerClass(combiner.class);
job.setReducerClass(reducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
job.setOutputFormatClass(MultipleTextOutputFormat.class);
MultipleTextOutputFotmat.setOutputPath(job, new Path(args[1]));
...

希望有帮助。

相关问题