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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/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 一个map reduce是否可以有多个输出文件?_Hadoop_Mapreduce - Fatal编程技术网

Hadoop 一个map reduce是否可以有多个输出文件?

Hadoop 一个map reduce是否可以有多个输出文件?,hadoop,mapreduce,Hadoop,Mapreduce,在我的输入文件中,我有一列作为国家。现在,我的任务是将特定国家的记录放入一个单独的文件中,并与该国家一起命名。这在地图缩小中是可以做到的吗。! 请分享您的想法。是的,在hadoop中,您可以使用它的方法来实现这一点 使用国家名称作为键,记录作为值,这应该完全符合您的需要。是的,在hadoop中,您可以使用它的方法来实现这一点 使用您的国家/地区名称作为键,记录作为值,这应该完全符合您的需要。如果您正在使用新的API,您应该查看该类。这个类中有一个例子 作业提交的使用模式: Job job = n

在我的输入文件中,我有一列作为国家。现在,我的任务是将特定国家的记录放入一个单独的文件中,并与该国家一起命名。这在地图缩小中是可以做到的吗。!
请分享您的想法。

是的,在hadoop中,您可以使用它的方法来实现这一点


使用国家名称作为键,记录作为值,这应该完全符合您的需要。

是的,在hadoop中,您可以使用它的方法来实现这一点


使用您的国家/地区名称作为键,记录作为值,这应该完全符合您的需要。

如果您正在使用新的API,您应该查看该类。这个类中有一个例子

作业提交的使用模式:

Job job = new Job(); FileInputFormat.setInputPath(job, inDir); FileOutputFormat.setOutputPath(job, outDir); job.setMapperClass(MOMap.class); job.setReducerClass(MOReduce.class); ... // Defines additional single text based output 'text' for the job MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, LongWritable.class, Text.class); // Defines additional sequence-file based output 'sequence' for the job MultipleOutputs.addNamedOutput(job, "seq", SequenceFileOutputFormat.class, LongWritable.class, Text.class); ... job.waitForCompletion(true); ... 作业=新作业(); setInputPath(作业,inDir); setOutputPath(作业,outDir); job.setMapperClass(MOMap.class); job.setReduceClass(MOReduce.class); ... //为作业定义其他基于单个文本的输出“文本” MultipleOutputs.addNamedOutput(作业,“文本”,TextOutputFormat.class, LongWritable.class、Text.class); //为作业定义其他基于序列文件的输出“序列” multipleOutput.addNamedOutput(作业“seq”, SequenceFileOutputFormat.class, LongWritable.class、Text.class); ... job.waitForCompletion(true); ... 减速器的用途:

String generateFileName(K k, V v) { return k.toString() + "_" + v.toString(); } public class MOReduce extends Reducer { private MultipleOutputs mos; public void setup(Context context) { ... mos = new MultipleOutputs(context); } public void reduce(WritableComparable key, Iterator values, Context context) throws IOException { ... mos.write("text", , key, new Text("Hello")); mos.write("seq", LongWritable(1), new Text("Bye"), "seq_a"); mos.write("seq", LongWritable(2), key, new Text("Chau"), "seq_b"); mos.write(key, new Text("value"), generateFileName(key, new Text("value"))); ... } public void cleanup(Context) throws IOException { mos.close(); ... } } 字符串generateFileName(K,V){ 返回k.toString()+“”+v.toString(); } 公共类MOReduce扩展 减速器{ 私人多路输出mos; 公共无效设置(上下文){ ... mos=新的多输出(上下文); } public void reduce(可写可比键、迭代器值、, 上下文(上下文) 抛出IOException{ ... 写(“文本”,键,新文本(“你好”); 最新的文字(“seq”,LongWritable(1),新文本(“Bye”),“seq_a”); mos.write(“seq”,LongWritable(2),key,new Text(“Chau”),“seq_b”); mos.write(键,新文本(“值”)),generateFileName(键,新文本(“值”)); ... } 公共无效清除(上下文)引发IOException{ mos.close(); ... } }
如果您正在使用新的API,那么应该查看该类。这个类中有一个例子

作业提交的使用模式:

Job job = new Job(); FileInputFormat.setInputPath(job, inDir); FileOutputFormat.setOutputPath(job, outDir); job.setMapperClass(MOMap.class); job.setReducerClass(MOReduce.class); ... // Defines additional single text based output 'text' for the job MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, LongWritable.class, Text.class); // Defines additional sequence-file based output 'sequence' for the job MultipleOutputs.addNamedOutput(job, "seq", SequenceFileOutputFormat.class, LongWritable.class, Text.class); ... job.waitForCompletion(true); ... 作业=新作业(); setInputPath(作业,inDir); setOutputPath(作业,outDir); job.setMapperClass(MOMap.class); job.setReduceClass(MOReduce.class); ... //为作业定义其他基于单个文本的输出“文本” MultipleOutputs.addNamedOutput(作业,“文本”,TextOutputFormat.class, LongWritable.class、Text.class); //为作业定义其他基于序列文件的输出“序列” multipleOutput.addNamedOutput(作业“seq”, SequenceFileOutputFormat.class, LongWritable.class、Text.class); ... job.waitForCompletion(true); ... 减速器的用途:

String generateFileName(K k, V v) { return k.toString() + "_" + v.toString(); } public class MOReduce extends Reducer { private MultipleOutputs mos; public void setup(Context context) { ... mos = new MultipleOutputs(context); } public void reduce(WritableComparable key, Iterator values, Context context) throws IOException { ... mos.write("text", , key, new Text("Hello")); mos.write("seq", LongWritable(1), new Text("Bye"), "seq_a"); mos.write("seq", LongWritable(2), key, new Text("Chau"), "seq_b"); mos.write(key, new Text("value"), generateFileName(key, new Text("value"))); ... } public void cleanup(Context) throws IOException { mos.close(); ... } } 字符串generateFileName(K,V){ 返回k.toString()+“”+v.toString(); } 公共类MOReduce扩展 减速器{ 私人多路输出mos; 公共无效设置(上下文){ ... mos=新的多输出(上下文); } public void reduce(可写可比键、迭代器值、, 上下文(上下文) 抛出IOException{ ... 写(“文本”,键,新文本(“你好”); 最新的文字(“seq”,LongWritable(1),新文本(“Bye”),“seq_a”); mos.write(“seq”,LongWritable(2),key,new Text(“Chau”),“seq_b”); mos.write(键,新文本(“值”)),generateFileName(键,新文本(“值”)); ... } 公共无效清除(上下文)引发IOException{ mos.close(); ... } }
您是否尝试过“tee”克隆输出流。没有@Marichyasana实际上我不知道这一点,您能否详细说明您使用的hadoop版本,以及您是否正在寻找基于旧API(
mapred
)或新API(
mapreduce
)的解决方案?@Rav。。。“tee”是一个unix命令,请看手册页。您是否尝试过“tee”克隆输出流。不@Marichyasana实际上我不知道这一点,您能否详细说明您使用的是什么版本的hadoop,以及您是否在寻找基于旧API(
mapred
)或新API(
mapreduce
)的解决方案?@Rav。。。“tee”是一个unix命令,请查看手册页。是否要解释上述代码??每个人都可以访问股票文档。人们来这里是为了解释这一点。想解释一下上面的代码吗??每个人都可以访问股票文档。人们到这里来解释这一点。