当前位置: 首页 > 知识库问答 >
问题:

减速机可以从不同的映射器接受多个输入吗?

鲜于渊
2023-03-14

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

共有1个答案

岳茂
2023-03-14

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

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

最好的办法是编写一个新的MapReduce作业,它使用< code>MultipleInputs将以前MapReduce作业的输出(具有text、floatwritable)和其他Mapper的输出(具有text、SongStats)转换为类似的类型(例如,text、text或任何最适合您需求的类型),并将其传递给reducer。

来源:

https://hadoop.apache.org/docs/r2.9.0/api/org/apache/hadoop/mapreduce/Reducer.html

https://hadoop.apache.org/docs/r2.6.3/api/org/apache/hadoop/mapreduce/lib/input/MultipleInputs.html

 类似资料:
  • 在Hadoop MapReduce中是否有可能使用多个不同的映射器有多个输入?每个映射器类都在一组不同的输入上工作,但它们都会发出由同一个减速器使用的键值对。请注意,我不是在这里谈论链接映射器,我是在谈论并行运行不同的映射器,而不是顺序运行。

  • 我正在尝试编写一个MapReduce作业,该作业可以解析CSV文件,将数据存储在HBase中并一次性执行简化函数。理想情况下,我想要 映射器输出良好记录到 HBase 表良好 映射器将坏记录输出到 HBase 表坏 映射器使用键将所有好的数据发送到化简器 还希望更新第三个表,表明存在新数据。此表将包含有关数据和日期的基本信息。最有可能的是每个 CSV 文件的一条或两条记录。 我知道如何使用HBas

  • 我的应用程序中有两个方法,它们使用相同的请求映射和不同的(http)方法 是否有可能在不同的控制器中定义它们,或者我应该考虑一些(可怕的)变通方法(比如重命名一个URL)?

  • MapReduce传递和发出键值对的基本信息。我需要弄清楚我们通过什么和发出什么。以下是我的关注点:MapReduce输入和输出: 1.Map() 方法 - 它是否采用单个或列表的键值对并发出什么?2.对于每个输入键值对,发出什么映射器?相同类型还是不同类型 ?3.对于每个中间键,减速器会发出什么?类型是否有任何限制?4.减速机接收所有具有相同键的值。值将如何排序,如排序或轨道排序?该顺序是否因运

  • 所以我做了一个测试窗口,里面有一个JTextField。我不知道出了什么问题。下面是主要代码。问题是,无论我做什么,我都无法编辑文本字段,也无法编辑我创建的第二个文本字段。我有一个带有文本字段的示例程序,它也可以工作,但根本不工作。 我不确定是否需要发布它,但我可以在这里获得完整程序的示例罐。我只发布了处理文本字段的区域 编辑:完整的源代码可在此处获得:GITHUB 我移除了一些东西,它成功了,我

  • 调用clear方法时,内存似乎减少了。然而,从其他答案来看,似乎< code>clear方法从未收缩过< code>HashMap。那么为什么内存会减少呢?