gpt4 book ai didi

hadoop - 如何更改hadoop中分区的reducer输出名称

转载 作者:行者123 更新时间:2023-12-02 20:49:01 26 4
gpt4 key购买 nike

在我的hadoop编程中,我想为化简器提供自定义输出名称,可以说这是代码段

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Partitioner;

public class Partitionclass extends Partitioner<Text, IntWritable>{



@Override
public int getPartition(Text key, IntWritable value, int numreducetasks){
// TODO Auto-generated method stub
Job job=null;
Configuration conf=new Configuration();
try {
job = Job.getInstance(conf, "word count");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(numreducetasks==2)
{
String partkey=key.toString();
int val=Integer.parseInt(partkey);
if(val%2==0)
{
//System.out.println("Even"+val);
job.getConfiguration().set("mapreduce.output.basename", "Even");
return 0;


}
else
{
job.getConfiguration().set("mapreduce.output.basename", "Odd");
return 1;

}
}
else if(numreducetasks==1)


return 0;
else
System.out.println("Please give reduce task at least one");
return -1;
}

}

我通过驱动程序类尝试了它,但是它确实可以工作,所以我在分区类中创建了作业,但仍然无法正常工作。我想要输出文件名,如For Odd
奇数r-00000和偶数,偶数r-00001。请问我到底该怎么做。

最佳答案

它在hadoop文档中提供。在这里-http://hadoop.apache.org/docs/r2.4.1/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

如下使用。

reduceMethod(){
.
.
.
.
multipleOutputs.write(key, value, generateFileName(key,value));
}

String generateFileName(Text key, IntWritable value){
return key.toString() + "_" + value.toString();
}

关于hadoop - 如何更改hadoop中分区的reducer输出名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46722536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com