Apache Pig - Architektura
Język używany do analizowania danych w Hadoop przy użyciu Pig jest znany jako Pig Latin. Jest to język przetwarzania danych wysokiego poziomu, który zapewnia bogaty zestaw typów danych i operatorów do wykonywania różnych operacji na danych.
Aby wykonać określone zadanie programiści używający Pig, programiści muszą napisać skrypt Pig w języku Pig Latin i wykonać je przy użyciu dowolnego mechanizmu wykonywania (Grunt Shell, UDFs, Embedded). Po wykonaniu te skrypty przejdą przez serię transformacji zastosowanych przez Pig Framework, aby wygenerować żądane dane wyjściowe.
Wewnętrznie Apache Pig konwertuje te skrypty na serię zadań MapReduce, a tym samym ułatwia pracę programisty. Architekturę Apache Pig pokazano poniżej.
Komponenty Apache Pig
Jak pokazano na rysunku, w strukturze Apache Pig znajdują się różne komponenty. Przyjrzyjmy się głównym komponentom.
Parser
Początkowo skrypty świni są obsługiwane przez parser. Sprawdza składnię skryptu, sprawdza typy i inne różne sprawdzenia. Wyjściem parsera będzie DAG (skierowany graf acykliczny), który reprezentuje instrukcje i operatory logiczne Pig Latin.
W DAG operatory logiczne skryptu są reprezentowane jako węzły, a przepływy danych są reprezentowane jako krawędzie.
Optimizer
Plan logiczny (DAG) jest przekazywany do optymalizatora logicznego, który przeprowadza logiczne optymalizacje, takie jak projekcja i wypychanie.
Kompilator
Kompilator kompiluje zoptymalizowany plan logiczny w serię zadań MapReduce.
Silnik wykonawczy
Na koniec zadania MapReduce są przesyłane do Hadoop w posortowanej kolejności. Na koniec te zadania MapReduce są wykonywane na platformie Hadoop, dając pożądane wyniki.
Model danych Pig Latin
Model danych Pig Latin jest w pełni zagnieżdżony i zezwala na złożone nieatomowe typy danych, takie jak map i tuple. Poniżej podano schematyczne przedstawienie modelu danych Pig Latin.
Atom
Każda pojedyncza wartość w Pig Latin, niezależnie od ich danych, jest znana jako Atom. Jest przechowywany jako ciąg i może być używany jako ciąg i liczba. int, long, float, double, chararray i bytearray to atomowe wartości Pig. Fragment danych lub prosta wartość atomowa jest znana jakofield.
Example - „raja” lub „30”
Tuple
Rekord utworzony przez uporządkowany zestaw pól jest nazywany krotką, a pola mogą być dowolnego typu. Krotka jest podobna do wiersza w tabeli RDBMS.
Example - (Raja, 30 lat)
Torba
Torba to nieuporządkowany zestaw krotek. Innymi słowy, zbiór krotek (nieunikalny) jest nazywany workiem. Każda krotka może mieć dowolną liczbę pól (elastyczny schemat). Worek jest reprezentowany przez „{}”. Jest podobny do tabeli w RDBMS, ale w przeciwieństwie do tabeli w RDBMS, nie jest konieczne, aby każda krotka zawierała taką samą liczbę pól lub aby pola na tej samej pozycji (kolumnie) miały ten sam typ.
Example - {(Raja, 30), (Mohammad, 45)}
Torba może być polem w relacji; w tym kontekście jest znany jakoinner bag.
Example - {Raja, 30, {9848022338, [email protected],}}
Mapa
Mapa (lub mapa danych) to zestaw par klucz-wartość. Plikkeymusi być typu chararray i powinno być niepowtarzalne. Plikvaluemoże być dowolnego typu. Jest reprezentowany przez „[]”
Example - [imię # Raja, wiek # 30]
Relacja
Relacja to zbiór krotek. Relacje w Pig Latin są nieuporządkowane (nie ma gwarancji, że krotki są przetwarzane w określonej kolejności).