使用 mapreduce 模拟 INNER JOIN 是相对简单的,在完成工作的 reducer 中映射公共键和连接值。但是当涉及到 LEFT OUTER JOIN 时,当左表中的键不存在于右表中时,就会面临组合填充右表的空缺的问题。映射到reducer时将丢弃不匹配的键,然后如何从左表中添加这些不匹配的键?
例如,假设我们有两个文件:
Left = {'matches': 1}
Right = {'matches': 2,
'matches_not': 3}
有人会想要这样的输出:
Output: {'matches-matches': [1, 2],
'matches-matches_not': [1, None]}
从映射器发出公用键“匹配”没有问题,因为左和右的出现都会使用公用键到达减速器,但是如果它从未到达减速器,如何获得“matches_not”的组合?