2017-04-19 71 views
0

我正在使用MapReduce为Web搜索构建倒排索引。我知道如何使用MapReduce的一点键式,你在这里设置:Hadoop MapReduce映射器和具有多个键类型的缩减器

但是,如果我的钥匙可以是不同类型的,请问这是支持?例如,一个键可能只是文本,另一个可能是一个PairOfWritables。我想要设置不同的关键字类型,以便从映射器输出到reducer,并从reducer输出到最终输出。我看到有一个名为MultipleOutputs的类允许指定不同的键和类,但我不确定这是否适合使用它。从互联网看来,MultipleOutputs似乎只用于reducer方法,而不是映射器。

+0

我不是Hadoop专家,但它似乎是这种情况,您可能希望在相同的数据上进行多次传递设置,以获得您需要的不同密钥。 (另外,看起来你可能会使用COTS搜索引擎而不是构建自己的搜索引擎,你看过Lucene吗?) – markspace

+0

@markspace不会是低效的,要多次遍历所有数据?另外,我正在做这个实验。 – Alessandro

+0

虽然基本上都是O(n),并且如果输入数据不可变,您可以并行运行任务。虽然如我所说,我不是专家,可能有更好的方法来做到这一点。 – markspace

回答

0

这是一个想法。你如何创建一个新的类,可以将任何类型的数据传递给reduce。该类将包含一个toString()方法,最终将您的数据表示为一个String。使用此字符串,使用Hadoop中的Text类可以将其用作关键字

相关问题