join - 如何使用 map-reduce 进行查找(或连接)?

标签 join mapreduce lookup

如何使用输入集

{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 的记录,因此您最终需要映射- reduce-reduce 用于最后的过滤步骤。)

关于join - 如何使用 map-reduce 进行查找(或连接)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752391/

相关文章:

mysql - 在 mysql 中使用 GROUP BY 和 SUM 保留零值

mongodb - 如何不在 MongoDB 的 reduce() 函数中保存数据?

java - 无法识别该程序中的错误

java - 使用 Hibernate Criteria 连接不同列上的三个实体所需的帮助

php - 使用 SQL (mysql) 将一个子查询的结果附加到另一个子查询的结果

SQL 查询 LEFT JOIN

hadoop - Map-Reduce - 仅适用于键值 NoSql 数据模型?

Excel - 如果两列中都存在值,则返回 "true"

python - pandas - 涉及分类分组的最近值查找

java - 从 Servlet 远程查找另一个 Glassfish