我有一个Map和减少作业运行。我想将一些数据输出到一个文件,并在作业中将一些数据输出到另一个文件。如何实现。请帮助我,因为我是新的hadoopMap减少。有人能举个例子吗?
btxsgosb1#
有一个 OutputFormat 调用的类 MultipleOutputFormat 可以用来代替默认值 TextOutputFormat .如文件所述:这个抽象类扩展了fileoutputformat,允许将输出数据写入不同的输出文件。这个类有三个基本用例。案例一:这个类用于至少有一个reducer的map reduce作业。reducer希望根据实际的键将数据写入不同的文件。假设键(或值)对实际键(值)和实际键(值)的所需位置进行编码。第二种情况:这个类用于只Map的作业。作业希望使用一个输出文件名,该输出文件名要么是输入数据的输入文件名的一部分,要么是输入数据的某个派生项。第三种情况:这个类用于只Map的作业。作业希望使用一个同时依赖于键和输入文件名的输出文件名。因为这是一个抽象类,所以很可能需要使用它的一个实现 MultipleTextOutputFormat .不同的方式 OutputFormat 比 TextOutputFormat 通过在创建和配置作业时指定它来使用:
OutputFormat
MultipleOutputFormat
TextOutputFormat
MultipleTextOutputFormat
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])); ...
希望有帮助。
1条答案
按热度按时间btxsgosb1#
有一个
OutputFormat
调用的类MultipleOutputFormat
可以用来代替默认值TextOutputFormat
.如文件所述:
这个抽象类扩展了fileoutputformat,允许将输出数据写入不同的输出文件。这个类有三个基本用例。案例一:这个类用于至少有一个reducer的map reduce作业。reducer希望根据实际的键将数据写入不同的文件。假设键(或值)对实际键(值)和实际键(值)的所需位置进行编码。第二种情况:这个类用于只Map的作业。作业希望使用一个输出文件名,该输出文件名要么是输入数据的输入文件名的一部分,要么是输入数据的某个派生项。第三种情况:这个类用于只Map的作业。作业希望使用一个同时依赖于键和输入文件名的输出文件名。
因为这是一个抽象类,所以很可能需要使用它的一个实现
MultipleTextOutputFormat
.不同的方式
OutputFormat
比TextOutputFormat
通过在创建和配置作业时指定它来使用:希望有帮助。