Hadoop 在M/R程序中使用一个映射进行wo缩减

Hadoop 在M/R程序中使用一个映射进行wo缩减,hadoop,mapreduce,cassandra,jobs,Hadoop,Mapreduce,Cassandra,Jobs,我有个问题。。如何使一个mapreduce作业具有一个mapper和两个reducer,这两个reducer输入都来自map输出?每个减速器都有自己的输出? 还有一件事是映射器可以有2个或更多的输入吗 public static class dpred extends Reducer<Text, DoubleWritable, Text, DoubleWritable> { public void reduce1(Text key, Iterable<DoubleWri

我有个问题。。如何使一个mapreduce作业具有一个mapper和两个reducer,这两个reducer输入都来自map输出?每个减速器都有自己的输出? 还有一件事是映射器可以有2个或更多的输入吗

public static class dpred extends Reducer<Text, DoubleWritable, Text, DoubleWritable>
 {
   public void reduce1(Text key, Iterable<DoubleWritable> values, Context context) throws IOException, InterruptedException
    {
        double beta = 17.62;
        DoubleWritable result1 = new DoubleWritable();
        double mul = 1;
        double res = 1;
         for (DoubleWritable val : values){
         //  System.out.println(val.get());
           mul *= val.get();
           }             
         res = beta*mul;
         result1.set(res);
         context.write(key, result1);
     }

///////////////////////////////////////////////////////////

public void reduce2(Text key, Iterable<DoubleWritable> values, Context context) throws IOException, InterruptedException
{
    double landa = 243.12;
    double sum = 0;
    double res = 0;
    DoubleWritable result2 = new DoubleWritable();
     for (DoubleWritable val : values){
     //  System.out.println(val.get());
       landa += val.get();
       }
    // System.out.println(sum);
     result2.set(landa);
     context.write(key, result2);
   }
 }
公共静态类dpred扩展了Reducer
{
public void reduce1(文本键、Iterable值、上下文上下文)引发IOException、InterruptedException
{
双β=17.62;
DoubleWritable result1=新的DoubleWritable();
双mul=1;
双res=1;
for(可双写val:值){
//System.out.println(val.get());
mul*=val.get();
}             
res=β*mul;
结果1.set(res);
write(key,result1);
}
///////////////////////////////////////////////////////////
public void reduce2(文本键、Iterable值、上下文上下文)引发IOException、InterruptedException
{
双兰达=243.12;
双和=0;
双res=0;
DoubleWritable result2=新的DoubleWritable();
for(可双写val:值){
//System.out.println(val.get());
landa+=val.get();
}
//系统输出打印项数(总和);
结果2.set(landa);
write(key,result2);
}
}

<>代码> < P>如果操作简单,可以考虑在一次还原函数中使用2上下文.WrreWe(可以用<代码>多输出输出>代码>如果需要的话将它们写入不同的文件)

减缩器执行相同的功能或不同的ONCES吗?你能告诉我们更多的细节吗?不,它们的功能不同。所有减缩器都从映射输出中给出键和值,其中一个执行+操作,另一个执行*操作。我编辑我的问题并添加代码。此外,我需要另一个映射函数来读取两个约简的结果。如果操作简单,可以考虑在一次还原函数中执行2上下文.WrreWe(可以用<代码>多输出输出>代码>如果需要的话将它们写入不同的文件)谢谢。所以让我来做你的建议。。感谢alotI将添加is作为答案,请投票结束问题