如何使用
{worker-id:1 name:john supervisor-id:3}
{worker-id:2 name:jane supervisor-id:3}
{worker-id:3 name:bob}
并产生输出集
{worker-id:1 name:john supervisor-name:bob}
{worker-id:2 name:jane supervisor-name:bob}
使用"纯"map-reduce框架,即只有一个map阶段和一个reduce阶段,但没有任何额外的功能,如CouchDB的查找?
具体细节取决于您的map-reduce框架。但这个想法是这样的。在映射阶段,发出两种类型的键/值对。(1, {name:john type:boss})
和(3, {worker-id:1 name:john type:worker})
。在reduce阶段,您将获得分组在一起的键的所有值。如果其中有boss类型的记录,则删除该记录并填充其他记录的主管名称。如果没有,那么你把那些记录扔在地板上。
基本上,您使用数据按键分组,然后在reduce中一起处理来执行连接。
(在一些map-reduce实现中,您可以在reduce中增量地获得键/值对。在这些实现中,您不能丢弃已经没有boss的记录,因此您最终需要在最后的过滤步骤中使用map-reduce-reduce。
只有一个或多个输入文件??我的意思是,有没有可能我们有一个文件,其中一个工人id有一个主管id,而它的描述(主管id的名称)在另一个文件中??