【发布时间】:2012-11-27 07:17:35
【问题描述】:
使用 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”的组合,怎么能做到减速机?
【问题讨论】:
-
我打错了示例中的Left和Right名称,我刚刚编辑。我明白为什么您找不到名称切换的问题。谢谢,现在我看到的情况是reducer将得到“matches_not”而不是将它与“matches”分组,因此确定左外部元素的方法将告诉reducer的出现次数是否小于2,你同意吗?
-
太好了,我现在就试试,谢谢!
-
将我的 cmets 移至答案。