具有多种键类型的 Hadoop MapReduce 映射器和缩减器

Hadoop MapReduce mapper and reducer with multiple key types

我正在使用 MapReduce 为网络搜索构建倒排索引。我知道如何使用一种键类型的 MapReduce,你在这里设置它:

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

但是,如果我的密钥可以是不同类型的,是否支持?例如,一个键可能只是 Text,另一个可能是 PairOfWritables。我想为从 mapper 到 reducer 以及从 reducer 到最终输出的输出设置不同的键类型。我已经看到有一个名为 MultipleOutputs 的 class 允许指定不同的键和 classes,但我不确定这是否是使用它的正确情况。从互联网上看,似乎a MultipleOutputs 只在reducer方法中使用,不在mapper中使用。

这是一个想法。您如何创建一个新的 class 可以将您希望传递给 reduce 的任何类型的数据。 class 将包含一个 toString() 方法,该方法最终将您的数据表示为字符串。使用此字符串,在 Hadoop 中使用文本 class 以便能够将其用作键