問題は、MapReduce 結合は通常、一部のフィールドで一致するレコードに同じリデュース キーを与えることで実装され、同じレデューサーに送信されるようになることです。したがって、これを回避することは少しハックになるでしょうが、それは可能です...
私がお勧めするのは、入力レコードごとに 3 つのコピーを生成し、それぞれに新しい「キー」フィールドがあり、元のフィールドがプレフィックスとして付けられていることです。たとえば、次の入力があったとします。
(ip=1.2.3.4, session=ABC, cookie=123)
(ip=3.4.5.6, session=DEF, cookie=456)
次に、生成します
(ip=1.2.3.4, session=ABC, cookie=123, key=ip_1.2.3.4)
(ip=1.2.3.4, session=ABC, cookie=123, key=session_ABC)
(ip=1.2.3.4, session=ABC, cookie=123, key=cookie_123)
(ip=3.4.5.6, session=DEF, cookie=456, key=ip_3.4.5.6)
(ip=3.4.5.6, session=DEF, cookie=456, key=session_DEF)
(ip=3.4.5.6, session=DEF, cookie=456, key=cookie_456)
そして、この新しいフィールドで簡単にグループ化できます。
私はスケーディング/カスケーディングにあまり詳しくありませんが (それについてもっと学びたいと思っていましたが)、これは Hadoop で一般的に行われている結合方法に確実に準拠しています。