Hadoop map / reduce结构

时间:2014-02-20 20:24:31

标签: hadoop

我想知道我是否可以为mapper / reducer指定多个“键”;比方说我有一个类如下

 class A {
     region
     name
     age
     .....
     more attributes
 }

我想根据三个不同的密钥提取信息:年龄,地区和名称。

例如将年龄作为关键:

< age, attributes related to age >

然后将名称作为键:

< name, attributes related to name >

同样适用于该地区;我现在的问题是,我是否必须创建不同的map / reduce作业,为每个作业提供不同的键?或者我可以(安全地)在一个地图/减少工作中这样做?

1 个答案:

答案 0 :(得分:1)

您也可以在单个Map Reduce作业中执行此操作。

您的Mapper会读取数据。假设这是序列化格式,其结构类似于您的类(自定义可写)。

从映射器中,您可以使用2个部分的复杂密钥形式收集输出 - 您要收集的内容:值,例如年龄:18。这可能是文本或自定义可写的。

根据您的使用案例,您可能需要使用分区程序来确保所有具有Age的键都转到单个reducer,而具有名称的键转到另一个reducer。没有分区器所有具有Age:18的键将转到相同的reducer。