mapreduce を使用して INNER JOIN をエミュレートすることは比較的簡単で、ジョブが完了するレデューサーで共通キーをマッピングし、値を結合します。しかし、LEFT OUTER JOIN に関して言えば、Right テーブルに存在しないキーが Left テーブルにある場合、Right テーブルの空きを埋める組み合わせの問題に直面します。一致しないキーはレデューサーにマップされると破棄されますが、これらの一致しないキーを左のテーブルから追加するにはどうすればよいですか?
たとえば、次の 2 つのファイルがあるとします。
Left = {'matches': 1}
Right = {'matches': 2,
'matches_not': 3}
次のような出力が必要です。
Output: {'matches-matches': [1, 2],
'matches-matches_not': [1, None]}
マッパーから共通キー 'matches' を発行しても問題はありません。Left と Right からの両方のオカレンスが共通キーでレデューサーに到達するためです。