2016-04-07 24 views

Odpowiedz

11

Zarówno transformacje Join, jak i CoGroup łączą dwa wejścia w kluczowych polach. Różnice to, w jaki sposób funkcje użytkownika są nazywane:

  • Dołącz transformacja wywołuje JoinFunction z pary pasujące rekordy z obu wejść, które mają te same wartości dla kluczowych dziedzin. To zachowanie jest bardzo podobne do wewnętrznego sprzężenia równości.
  • Transformacja CoGroup wywołuje iteratory CoGroupFunction z dla wszystkich rekordów obu wejść, które mają takie same wartości dla pól kluczowych. Jeśli dane wejściowe nie mają rekordów dla pewnej wartości klucza, przekazywany jest pusty iterator. Transformacja CoGroup może być używana, między innymi, do łączenia wewnętrznych i zewnętrznych równości. Jest więc bardziej ogólny niż transformacja Join.

Patrząc na strategiach wykonawczymi Dołącz i CoGroup, Dołącz mogą być wykonywane przy użyciu sort- i hash oparte dołączyć strategie gdzie jako CoGroup jest zawsze wykonywany przy użyciu strategii opartej sortowania. Stąd połączenia są często bardziej wydajne niż cogroups i powinny być preferowane, jeśli to możliwe.

Powiązane problemy