Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 作业输出到多个文件_Hadoop_Mapreduce_Hadoop Streaming - Fatal编程技术网

Hadoop 作业输出到多个文件

Hadoop 作业输出到多个文件,hadoop,mapreduce,hadoop-streaming,Hadoop,Mapreduce,Hadoop Streaming,我有一个地图和减少作业运行。我想将一些数据输出到一个文件,并在作业中将一些数据输出到另一个文件。如何实现这一目标。请帮助我,因为我是Hadoop map reduce的新手。有人能举个例子吗?有一个名为MultipleOutputFormat的OutputFormat类,可以用来代替默认的TextOutputFormat 如合同所述: 这个抽象类扩展了FileOutputFormat,允许将输出数据写入不同的输出文件。这个类有三个基本用例。案例一:此类用于至少有一个减速机的map reduce作

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

有一个名为MultipleOutputFormat的OutputFormat类,可以用来代替默认的TextOutputFormat

如合同所述:

这个抽象类扩展了FileOutputFormat,允许将输出数据写入不同的输出文件。这个类有三个基本用例。案例一:此类用于至少有一个减速机的map reduce作业。reducer希望根据实际键将数据写入不同的文件。假设一个键或值对实际键值和实际键值的期望位置进行编码。案例二:此类用于仅映射作业。作业希望使用作为输入数据的输入文件名的一部分或其派生的输出文件名。案例三:此类用于仅地图作业。作业希望使用一个同时依赖于键和输入文件名的输出文件名

由于这是一个抽象类,您很可能需要使用它的一个实现

使用与TextOutputFormat不同的OutputFormat的方式是在创建和配置作业时指定它:

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]));
...

希望对您有所帮助。

非常感谢您的回复。它给了我一个想法。我还有一个问题。我想使用一个全局数据结构,比如HashMap,它可用于所有作业。如何做到这一点?您有几个关于如何通过stackoverflow处的配置对象传递自定义参数的示例:。在这些情况下,传递的参数是一个简单的值;在您的情况下,我认为您必须在HashMap上进行迭代,并将每个键、值作为单个参数传递。