Map Side Join Vs. Tilslutte



Dette indlæg diskuterer Hadoop Map side join Vs. tilslutte. Lær også, hvad der er kortreduktion, sammenføjningstabel, sammenføjningsside, fordelene ved at bruge sammenføjningsoperation på kort i Hive

I denne blog skal vi diskutere om Map side join og dets fordele i forhold til den normale tilslutningsoperation i Hive .Dette er et vigtigt koncept, som du bliver nødt til at lære at implementere din .Men inden vi kender til dette, skal vi først forstå begrebet 'Tilslutte' og hvad der sker internt, når vi udfører sammenføjningen Hive .

Tilslutte er en klausul, der kombinerer poster i to tabeller (eller datasæt).
Antag, at vi har to tabeller A og B. Når vi udfører sammenføjningsoperation på dem, returnerer det de poster, der er kombinationen af ​​alle kolonner fra A og B.





Lad os nu forstå funktionaliteten af ​​normal sammenføjning med et eksempel ..

Hver gang vi anvender tilslutningsoperation, tildeles jobbet en kortreduktionsopgave, der består af to faser- a ‘Kortstadie 'Og en' Reducer scenen '. En kortlæggeres job under Map Stage er at 'Læs' dataene fra sammenføjningstabeller og til 'Vend tilbage' det 'Deltag nøgle' og 'Sammenkædningsværdi' par i en mellemfil. Yderligere, i blandestadiet, sorteres denne mellemfil derefter og flettes. Reduktørens job under reduceringsfasen er at tage dette sorterede resultat som input og fuldføre opgaven med at deltage.



  • Map-side Join svarer til en join, men hele opgaven udføres af kortlæggeren alene.

    java find største nummer på listen
  • Map-side-sammenføjningen vil for det meste være egnet til små borde for at optimere opgaven.



Hvordan optimeres opgaven med kortsiden sammen?

Antag, at vi har to tabeller, hvoraf den ene er et lille bord. Når vi indsender en kortreduktionsopgave, oprettes en Map-reduktion-lokal opgave, før den oprindelige tilslutning til Map Reduce-opgave, som læser data fra den lille tabel fra HDFS og gemmer den i en hash-tabel i hukommelsen. Efter læsning serialiserer den hash-tabellen i hukommelsen til en hash-tabelfil.

I den næste fase, når den oprindelige sammenkædning af Map Reduce-opgave kører, flyttes dataene i hash-tabelfilen til den Hadoop-distribuerede cache, der udfylder disse filer til hver kortlægers lokale disk. Så alle kortlæggerne kan indlæse denne vedvarende hash-tabelfil tilbage i hukommelsen og udføre sammenføjningsarbejdet som før. Udførelsesstrømmen for det optimerede kortsamling vises i nedenstående figur. Efter optimering skal det lille bord læses kun én gang. Også hvis flere mappers kører på den samme maskine, behøver den distribuerede cache kun at skubbe en kopi af hash-tabelfilen til denne maskine.

Fordele ved at bruge kortsidesammenføjning:

  • Kortsidesammenføjning hjælper med at minimere de omkostninger, der afholdes ved sortering og fletning i blande og reducere niveauer.
  • Map-side-sammenføjning hjælper også med at forbedre udførelsen af ​​opgaven ved at mindske tiden til at afslutte opgaven.

Ulemper ved Map-side sammenføjning:

  • Kortsidesammenføjning er kun tilstrækkelig, når en af ​​tabellerne, hvor du udfører sammenføjning på kortsiden, er lille nok til at passe ind i hukommelsen. Derfor er det ikke egnet til at udføre kortsidesammenføjning på tabellerne, som er enorme data i dem begge.

Simpelt eksempel på kortreducerende sammenføjninger:

Lad os oprette to tabeller:

  • Emp : indeholder oplysninger om en medarbejder, f.eks. medarbejdernavn, medarbejder-id og den afdeling, hun tilhører.

  • Afdeling: indeholder detaljer som navnet på afdelingen, afdelings-id og så videre.

Opret to inputfiler som vist i det følgende billede for at indlæse dataene i de oprettede tabeller.

medarbejder.txt

dept.txt

Lad os nu indlæse dataene i tabellerne.

Lad os udføre Kort-side Tilslutte på de to tabeller for at udtrække listen over afdelinger, hvor hver medarbejder arbejder.

Her, den anden tabel afd er et lille bord. Husk, at antallet af afdelinger altid vil være mindre end antallet af medarbejdere i en organisation.

java ekstern metode indkaldelse eksempel

Lad os nu udføre den samme opgave ved hjælp af en normal Reduce-side-sammenføjning.

Mens du udfører begge sammenføjninger, kan du finde de to forskelle:

  • Kortreducerende sammenkædning har afsluttet jobbet på kortere tid sammenlignet med den tid, det tager ved normal deltagelse.

  • Map-reducer join har afsluttet sit job uden hjælp fra nogen reducer, mens normal join udførte dette job ved hjælp af en reducer.

Derfor Map-side Deltag er dit bedste valg, når et af bordene er lille nok til at passe i hukommelsen til at fuldføre jobbet på kort tid.

I Realtidsmiljø , vil du have datasæt med enorm mængde data. Så udførelse af analyse og hentning af data vil være tidskrævende, hvis et af datasættene er af mindre størrelse. I sådanne tilfælde Map-side sammenføjning hjælper med at fuldføre jobbet på kortere tid.

Der har aldrig været et bedre tidspunkt at mestre Hadoop! Kom godt i gang nu med det specielt kuraterede Big Data og Hadoop kursus af Edureka.

Referencer:
https://www.facebook.com/notes/facebook-engineering/join-optimization-in-apache-hive/470667928919

Relaterede indlæg:

7 måder Big Data Training kan ændre din organisation