Map Side Join Vs. Присъединяване



Тази публикация обсъжда Hadoop Map страна присъединяване Vs. присъединяване. Също така научете какво е намаляване на картата, присъединяване към таблица, присъединяване към страната, предимства на използването на операция за присъединяване от страна на картата в Hive

В този блог ще обсъдим за Картата се присъедини и неговите предимства пред нормалната операция на свързване в Кошера .Това е важна концепция, която ще трябва да се научите да прилагате .Но преди да знаем за това, първо трябва да разберем концепцията за 'Присъединяване' и какво се случва вътрешно, когато изпълняваме присъединяването Кошера .

Присъединяване е клауза, която комбинира записите на две таблици (или набори от данни).
Да приемем, че имаме две таблици A и B. Когато извършим операция за обединяване върху тях, тя ще върне записите, които са комбинацията от всички колони от A и B.





Сега нека разберем функционалността на нормалното присъединяване с пример ..

Когато приложим операция за присъединяване, заданието ще бъде възложено на задача за намаляване на картата, която се състои от два етапа - а ‘Етап на картата И „ Намалете етапа ’. Работата на картограф по време на Map Stage е да 'Прочети' данните от таблиците за присъединяване и до „Връщане“ на ‘Ключ за присъединяване’ и ‘Присъединяване на стойност’ сдвояване в междинен файл. Освен това, на етапа на разбъркване този междинен файл след това се сортира и обединява. Работата на редуктора по време на етапа на редуциране е да вземе този сортиран резултат като вход и да изпълни задачата за присъединяване.



  • Присъединяването от страна на картата е подобно на обединяване, но цялата задача ще бъде изпълнена само от картографа.

  • Присъединяването от страна на картата ще бъде най-подходящо за малки маси за оптимизиране на задачата.



Как ще се присъедини страната от картата за оптимизиране на задачата?

Да приемем, че имаме две таблици, от които едната е малка таблица. Когато изпратим задача за намаляване на картата, ще бъде създадена локална задача за намаляване на картата преди първоначалното присъединяване на задача за намаляване на картата, която ще чете данни от малката таблица от HDFS и ще ги съхранява в хеш таблица в паметта. След четене той сериализира хеш таблицата в паметта във файл на хеш таблица.

размер на масива в javascript

На следващия етап, когато първоначалната задача за присъединяване Map Reduce се изпълнява, тя премества данните в файла на хеш таблицата в разпределения кеш на Hadoop, който попълва тези файлове на локалния диск на всеки картограф. Така че всички картографи могат да заредят този постоянен файл на хеш таблица обратно в паметта и да свържат работата както преди. Потокът на изпълнение на оптимизираното присъединяване на карта е показан на фигурата по-долу. След оптимизацията малката таблица трябва да се прочете само веднъж. Също така, ако на една и съща машина се изпълняват множество картографи, разпределеният кеш трябва само да изпрати едно копие на файла на хеш таблицата към тази машина.

Предимства на използването на присъединяване от страна на картата:

  • Присъединяването от страна на картата помага за минимизиране на разходите, направени за сортиране и обединяване в разбъркване и намаляване етапи.
  • Присъединяването от страна на картата също помага за подобряване на изпълнението на задачата, като намалява времето за завършване на задачата.

Недостатъци на присъединяването от страна на картата:

  • Присъединяването от страна на картата е адекватно само когато една от таблиците, върху които изпълнявате операция по приобщаване от страна на картата, е достатъчно малка, за да се побере в паметта. Следователно не е подходящо да се извършва присъединяване от страна на картата върху таблиците, които имат огромни данни и в двете.

Прост пример за намаляване на присъединяванията на картата:

Нека създадем две таблици:

  • Emp : съдържа подробности за служител, като име на служител, идентификационен номер на служителя и отдела, към който принадлежи.

  • Дълбочина: съдържа подробности като име на отдела, идентификационен номер на отдела и т.н.

Създайте два входни файла, както е показано на следващото изображение, за да заредите данните в създадените таблици.

служител.txt

dept.txt

Сега нека да заредим данните в таблиците.

как да използвам trim в java -

Нека изпълним От страна на картата Присъединяване на двете таблици, за да извлечете списъка с отдели, в които всеки служител работи.

Ето, отдел втора маса е малка масичка. Не забравяйте, че винаги броят на отдела ще бъде по-малък от броя на служителите в дадена организация.

Сега нека изпълним същата задача с помощта на нормално присъединяване от страна на намаляване.

Докато изпълнявате двете съединения, можете да намерите двете разлики:

купчина и стек памет в Java
  • Присъединяването с намаление на картата е завършило работата за по-малко време в сравнение с времето, необходимо за нормално присъединяване.

  • Присъединяването за намаляване на картата завърши работата си без помощта на никакъв редуктор, докато нормалното присъединяване изпълни тази работа с помощта на един редуктор.

Следователно, Присъединяване от страна на картата е най-добрият ви залог, когато една от таблиците е достатъчно малка, за да се побере в паметта, за да завършите работата за кратък период от време.

В Среда в реално време , ще имате набори от данни с огромно количество данни. Така че извършването на анализ и извличане на данни ще отнеме много време, ако един от наборите от данни е с по-малък размер. В такива случаи Присъединяване от страна на картата ще ви помогне да завършите работата за по-малко време.

Никога не е имало по-добро време за овладяване на Hadoop! Започнете сега със специално подготвения курс за големи данни и Hadoop от Edureka.

Препратки:
https://www.facebook.com/notes/facebook-engineering/join-optimization-in-apache-hive/470667928919

Подобни публикации:

7 начина, по които обучението за големи данни може да промени вашата организация