我想知道我是否可以为mapper / reducer指定多个“键”;比方说我有一个类如下
class A {
region
name
age
.....
more attributes
}
我想根据三个不同的密钥提取信息:年龄,地区和名称。
例如将年龄作为关键:
< age, attributes related to age >
然后将名称作为键:
< name, attributes related to name >
同样适用于该地区;我现在的问题是,我是否必须创建不同的map / reduce作业,为每个作业提供不同的键?或者我可以(安全地)在一个地图/减少工作中这样做?
答案 0 :(得分:1)
您也可以在单个Map Reduce作业中执行此操作。
您的Mapper会读取数据。假设这是序列化格式,其结构类似于您的类(自定义可写)。
从映射器中,您可以使用2个部分的复杂密钥形式收集输出 - 您要收集的内容:值,例如年龄:18。这可能是文本或自定义可写的。
根据您的使用案例,您可能需要使用分区程序来确保所有具有Age的键都转到单个reducer,而具有名称的键转到另一个reducer。没有分区器所有具有Age:18的键将转到相同的reducer。