Java reducer能否从不同的映射器获取多个输入?

Java reducer能否从不同的映射器获取多个输入?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,减速机可以接受多个输入吗?两个映射器的键相同,但值类型不同。首先是一个MapReduce程序,它输出(文本,floatwritable),其中floatwritable是值类型,text是键。第二个是输出(文本,SongStats)的映射器,其中SongStats是实现可写的自定义数据类型。我想要一个减速机在运行计算时同时获取早期map reduce和第二个mapper的输出。我认为第一个MapReduce程序的输出可能太大,无法保存在分布式缓存中。任何指示都会有帮助。我正在用Java编写程序。

减速机可以接受多个输入吗?两个映射器的键相同,但值类型不同。首先是一个MapReduce程序,它输出(文本,floatwritable),其中floatwritable是值类型,text是键。第二个是输出(文本,SongStats)的映射器,其中SongStats是实现可写的自定义数据类型。我想要一个减速机在运行计算时同时获取早期map reduce和第二个mapper的输出。我认为第一个MapReduce程序的输出可能太大,无法保存在分布式缓存中。任何指示都会有帮助。我正在用Java编写程序。

不,减速器只能接收方法定义中定义的特定输入:

public void reduce(Key key, Iterable<IntWritable> values,
                  Context context) throws IOException, InterruptedException {
public void reduce(键值、Iterable值、,
上下文)抛出IOException、InterruptedException{
最好是编写一个新的MapReduce作业,该作业使用
多个输入
将上一个MapReduce作业(具有文本,可浮动写入)的输出和另一个Mapper(具有文本,SongStats)的输出转换为类似的类型(例如,文本,文本或任何最适合您需要的内容),并将其传递给reducer

资料来源:


提问时请提供代码示例。这很有帮助。谢谢