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

具有多个键类型的Hadoop MapReduce映射器和还原器

谷隐水
2023-03-14

我正在使用MapReduce为web搜索建立一个倒排索引。我知道如何使用一个键类型的MapReduce,您在这里设置它:

job.setMapOutputKeyClass(ArrayListWritable.class);
job.setOutputKeyClass(ArrayListWritable.class);

但是,如果我的密钥可以是不同类型的,那是不是支持呢?例如,一个键可能只是文本,另一个键可能是PairofWritables。我想为从映射器到reducer的输出,以及从reducer到最终输出的输出设置不同的键类型。我已经看到了一个名为MultipleOutput的类,它允许指定不同的键和类,但我不确定这是否适合在其中使用它。从网上看来,一个MultipleOutputs只在reducer方法中使用,而不是映射器。

共有1个答案

拓拔泉
2023-03-14

这里有一个想法。不如创建一个新的类,它可以接受您希望传递到Reduce上的任何类型的数据。该类将包含一个toString()方法,该方法最终将数据表示为字符串。使用这个字符串,在Hadoop中使用Text类,以便能够将其用作键

 类似资料:
  • 我可以有一个哈希图在Java看起来像这样吗? 我的问题和这里的类似问题 我是Java新手。所以我想知道的是,如果我需要上面这样的东西,如果它无效,什么是最好的数据结构?

  • 我正在使用Spring,并且在我的项目中从mapstruct库开始,所以我有了一个想法,为@mapper(componentModel=“Spring”)创建原型注释,比如@springmapper。但它不会生成任何映射器。 是不可能还是我做错了什么?

  • 在java 8中创建新代码后,我想清除声纳问题。 我的代码: 声纳说: Lambda应该替换为方法引用。方法/构造函数引用比使用lambda更紧凑和可读性,因此是首选。同样,空检查可以替换为对Object::isNull和Object::nonNull方法的引用。 我想要更改映射(arg-

  • 问题内容: 我必须完成一个奇怪的特殊情况。其描述如下: 我必须设计一个地图,其中“ 键 ”始终为 字符串 类型。但是,其中一个键的“ 值 ”可以是 字符串或列表 (取决于特定键可以具有的值数。如果该特定键只有一个值,并且必须如果键包含许多值,则为列表)。如何完成这种情况? 例如:在映射中有2个键,分别是“名称”和“电话号码”。一个人只能有一个名字和多个电话号码。因此,此处的第一个键(即“名称”)的

  • 问题内容: hadoop的新手,并试图从此处了解mapreduce wordcount示例代码。 文档中的映射器是- 我看到在mapreduce字数示例中,映射代码如下 问题- Object类型的此键的作用是什么?如果映射器的输入是文本文档,那么我假设其中的值将是hadoop已分区并存储在HDFS中的文本块(64MB或128MB)。 更一般而言,此输入键Keyin在地图代码中的用途是什么? 任何指

  • 问题内容: 我正在尝试创建一个通用类型,该通用类型保留已创建的自身版本的地图以供以后使用。实际上,这是一种单例模式,其中每种类型都有一个实例。到目前为止,我的代码是: 但是,我仍然不确定我是否“做对了”。感觉我应该能够指定该集合为(类-> FieldBinder)。IDE警告有关return语句的事实只会加强这种想法。 有没有更好的方法来解决这个问题? 注意:这个问题似乎密切相关,但是距离足够远,