Hadoop 减速器类可能不会被启动吗?Can';在reducer日志中看不到Sytem.out.println语句

Hadoop 减速器类可能不会被启动吗?Can';在reducer日志中看不到Sytem.out.println语句,hadoop,mapreduce,bigdata,Hadoop,Mapreduce,Bigdata,我有一个驱动程序类、映射器类和减速器类。mapreduce作业运行良好。但理想的结果并没有出现。我已将System.out.println语句放在减速机中。我查看了mapper和reducer的日志。我放在mapper中的System.out.println语句可以在日志中看到,但reducer中的println语句在日志中看不到。有可能减速机根本没有启动吗 这是减速机的原木 我假设这个问题基于您前面问题中的代码: 公共类CompositeKeyReducer扩展了Reducer{ 公共void

我有一个驱动程序类、映射器类和减速器类。mapreduce作业运行良好。但理想的结果并没有出现。我已将System.out.println语句放在减速机中。我查看了mapper和reducer的日志。我放在mapper中的System.out.println语句可以在日志中看到,但reducer中的println语句在日志中看不到。有可能减速机根本没有启动吗

这是减速机的原木


我假设这个问题基于您前面问题中的代码:

公共类CompositeKeyReducer扩展了Reducer{
公共void reduce(国家/地区键、迭代器值、上下文上下文)引发IOException、InterruptedException{
}
}
reduce未运行,因为
reduce
方法签名错误。你有:

public void reduce(国家/地区键、迭代器值、上下文)

应该是:

public void reduce(国家/地区键、Iterable值、上下文)


为了确保这种情况不再发生,您应该向类中添加
@Override
注释。这将告诉您是否签名有误。

我假设此问题基于您先前问题中的代码:

公共类CompositeKeyReducer扩展了Reducer{
公共void reduce(国家/地区键、迭代器值、上下文上下文)引发IOException、InterruptedException{
}
}
reduce未运行,因为
reduce
方法签名错误。你有:

public void reduce(国家/地区键、迭代器值、上下文)

应该是:

public void reduce(国家/地区键、Iterable值、上下文)


为了确保这种情况不再发生,您应该向类中添加
@Override
注释。这将告诉您是否签名有误。

代码没有更改。现在可以了。
我所做的只是重新启动了Hadoop Cloudera映像,现在它可以正常工作了。真不敢相信会发生这种事

代码没有变化。现在可以了。
我所做的只是重新启动了Hadoop Cloudera映像,现在它可以正常工作了。真不敢相信会发生这种事

我检查了我编写的其他mapreduce程序。日志中显示了我在reducer中编写的System.out.Println语句。但不是为了这个节目。有什么建议吗?请尝试检查完成后映射作业输出的记录数。Reducer作业正在运行。但由于某些原因,它没有将任何System.out.println语句写入日志文件。这很奇怪,你是否使用“纱线日志-应用程序ID命令”获取所有日志?我不知道这个日志是否称为“纱线日志”。当我们运行mapreduce作业时,它为我们提供了查看地图和减少日志的超链接。这就是我所看到的。我检查了我编写的其他mapreduce程序。日志中显示了我在reducer中编写的System.out.Println语句。但不是为了这个节目。有什么建议吗?请尝试检查完成后映射作业输出的记录数。Reducer作业正在运行。但由于某些原因,它没有将任何System.out.println语句写入日志文件。这很奇怪,你是否使用“纱线日志-应用程序ID命令”获取所有日志?我不知道这个日志是否称为“纱线日志”。当我们运行mapreduce作业时,它为我们提供了查看地图和减少日志的超链接。这就是我看到的,明白了。让我试试,我会让你们知道的。我在reduce参数中从“Iterator”改为“Iterable”。创建Jar并运行程序。输出仍然没有变化。问题是我甚至看不到我在reducer(sytem.out.println)中的注释。这很奇怪。您也要查看我的驱动程序代码吗?如何在“注释”框中发布代码?非常感谢这输出看起来像
part-r-00000
还是
part-m-00000
?在作业的计数器中,您可以看到reduce阶段的计数吗?是的,输出看起来像part-r-00000。我会查一下柜台,然后告诉你。我还将把reduer数设为零,看看它是否对输出有任何影响。您是否在代码中添加了
@Override
注释?如果计数器告诉您一个reduce阶段已经运行,那么它很可能只是运行了您正在扩展的基本
reducer
类中的identity reducer。明白了。让我试试,我会让你们知道的。我在reduce参数中从“Iterator”改为“Iterable”。创建Jar并运行程序。输出仍然没有变化。问题是我甚至看不到我在reducer(sytem.out.println)中的注释。这很奇怪。您也要查看我的驱动程序代码吗?如何在“注释”框中发布代码?非常感谢这输出看起来像
part-r-00000
还是
part-m-00000
?在作业的计数器中,您可以看到reduce阶段的计数吗?是的,输出看起来像part-r-00000。我会查一下柜台,然后告诉你。我还将把reduer数设为零,看看它是否对输出有任何影响。您是否在代码中添加了
@Override
注释?如果计数器告诉您一个reduce阶段已经运行,那么它很可能只是运行了要扩展的基本
reducer
类中的identity reducer。
public  class CompositeKeyReducer extends Reducer<Country, IntWritable, Country, IntWritable> {

    public void reduce(Country key, Iterator<IntWritable> values, Context context) throws IOException, InterruptedException {

    }
}