Na tym blogu omówimy Połączenie po stronie mapy i jego zalety w stosunku do normalnej operacji łączenia w programie Ul .To ważna koncepcja, której musisz nauczyć się wdrażać .Ale zanim się o tym dowiemy, powinniśmy najpierw zrozumieć pojęcie 'Przystąp' i co dzieje się wewnętrznie, gdy wykonujemy dołączanie Ul .
Przystąp jest klauzulą łączącą rekordy dwóch tabel (lub zbiorów danych).
Załóżmy, że mamy dwie tabele A i B. Kiedy wykonamy na nich operację złączenia, zwróci ona rekordy będące kombinacją wszystkich kolumn A i B.
Przyjrzyjmy się teraz na przykładzie funkcji normalnego łączenia.
Za każdym razem, gdy zastosujemy operację łączenia, zadanie zostanie przypisane do zadania Map Reduce, które składa się z dwóch etapów - a „Etap mapy ”I„ Zmniejsz etap ”. Zadaniem twórcy map podczas etapu mapy jest 'czytać' dane z tabel łączenia i do 'powrót' the „Klucz dołączania” i „Wartość łączenia” sparować w plik pośredni. Ponadto na etapie odtwarzania losowego ten plik pośredni jest następnie sortowany i scalany. Zadaniem reduktora na etapie redukcji jest pobranie posortowanego wyniku jako danych wejściowych i wykonanie zadania łączenia.
javascript sprawdź długość tablicy
Łączenie po stronie mapy jest podobne do łączenia, ale całe zadanie będzie wykonywane samodzielnie przez twórcę map.
Łączenie po stronie mapy będzie odpowiednie głównie dla małych tabel w celu optymalizacji zadania.
W jaki sposób łączenie po stronie mapy zoptymalizuje zadanie?
Załóżmy, że mamy dwa stoliki, z których jeden jest małym stolikiem. Kiedy prześlemy zadanie redukcji mapy, lokalne zadanie Map Reduce zostanie utworzone przed pierwotnym połączeniem zadania Map Reduce, które odczyta dane małej tabeli z HDFS i zapisze je w tablicy mieszania w pamięci. Po przeczytaniu serializuje tabelę skrótów w pamięci do pliku tabeli skrótów.
W następnym etapie gdy jest uruchomione oryginalne zadanie łączenia Map Reduce, przenosi dane z pliku tabeli skrótów do rozproszonej pamięci podręcznej Hadoop, która zapełnia te pliki na dysk lokalny każdego programu mapującego. Tak więc wszyscy mapujący mogą załadować ten trwały plik tablicy skrótów z powrotem do pamięci i wykonywać łączenie jak poprzednio. Przebieg wykonania zoptymalizowanego sprzężenia mapy pokazano na poniższym rysunku. Po optymalizacji małą tabelkę należy przeczytać tylko raz. Ponadto, jeśli na tym samym komputerze działa wiele programów odwzorowujących, rozproszona pamięć podręczna musi przesłać tylko jedną kopię pliku tablicy skrótów na ten komputer.
Zalety korzystania z łączenia po stronie mapy:
- Łączenie po stronie mapy pomaga w zminimalizowaniu kosztów związanych z sortowaniem i scalaniem w człapać i zmniejszyć gradacja.
- Łączenie po stronie mapy pomaga również w poprawie wydajności zadania, skracając czas potrzebny na jego ukończenie.
Wady łączenia po stronie mapy:
- Łączenie po stronie mapy jest odpowiednie tylko wtedy, gdy jedna z tabel, na których wykonujesz operację łączenia po stronie mapy, jest wystarczająco mała, aby zmieścić się w pamięci. W związku z tym łączenie po stronie mapy nie jest odpowiednie dla tabel, które zawierają ogromne ilości danych w obu z nich.
Prosty przykład łączenia map Reduce:
Stwórzmy dwie tabele:
- Emp : zawiera szczegółowe informacje o pracowniku, takie jak imię i nazwisko pracownika, identyfikator pracownika oraz dział, do którego należy.
- Dział: zawiera szczegóły, takie jak nazwa oddziału, identyfikator wydziału i tak dalej.
Utwórz dwa pliki wejściowe, jak pokazano na poniższej ilustracji, aby załadować dane do utworzonych tabel.
pracownik.txt
dept.txt
Teraz załadujmy dane do tabel.
Wykonajmy Po stronie mapy Przystąp w dwóch tabelach, aby wyodrębnić listę działów, w których pracuje każdy pracownik.
Tutaj Drugi oddział stołu to mały stolik. Pamiętaj, zawsze liczba działów będzie mniejsza niż liczba pracowników w organizacji.
Wykonajmy teraz to samo zadanie przy pomocy zwykłego łączenia po stronie Reduce.
python def __init __ (self)
Wykonując oba łączenia, możesz znaleźć dwie różnice:
Łączenie z redukcją mapy wykonało zadanie w krótszym czasie w porównaniu z czasem wymaganym w normalnym łączeniu.
Łączenie map-redukuj zakończyło swoje zadanie bez pomocy żadnego reduktora, podczas gdy normalne złączenie wykonało to zadanie za pomocą jednego reduktora.
jak testować bazę danych
W związku z tym, Łączenie po stronie mapy to najlepszy wybór, gdy jeden ze stołów jest wystarczająco mały, aby zmieścić się w pamięci i wykonać zadanie w krótkim czasie.
W Środowisko czasu rzeczywistego , będziesz mieć zbiory danych z ogromną ilością danych. Zatem wykonanie analizy i odzyskanie danych będzie czasochłonne, jeśli jeden z zestawów danych ma mniejszy rozmiar. W takich sprawach Łączenie po stronie mapy pomoże wykonać pracę w krótszym czasie.
Nigdy nie było lepszego czasu na opanowanie Hadoop! Zacznij już teraz od specjalnie przygotowanego kursu Big Data i Hadoop firmy Edureka.
Bibliografia:
https://www.facebook.com/notes/facebook-engineering/join-optimization-in-apache-hive/470667928919
Powiązane posty:
7 sposobów, w jakie szkolenia z zakresu Big Data mogą zmienić Twoją organizację