Apache Pig - przegląd
Co to jest Apache Pig?
Apache Pig to abstrakcja w stosunku do MapReduce. Jest to narzędzie / platforma, która służy do analizy większych zbiorów danych reprezentujących je jako przepływy danych. Pig jest zwykle używany zHadoop; możemy wykonać wszystkie operacje manipulacji danymi w Hadoop przy użyciu Apache Pig.
Do pisania programów do analizy danych Pig udostępnia język wysokiego poziomu znany jako Pig Latin. Ten język zapewnia różnym operatorom, za pomocą których programiści mogą opracowywać własne funkcje odczytu, zapisu i przetwarzania danych.
Aby analizować dane za pomocą Apache Pig, programiści muszą pisać skrypty w języku Pig Latin. Wszystkie te skrypty są wewnętrznie konwertowane na zadania mapowania i redukcji. Apache Pig ma składnik znany jakoPig Engine który akceptuje skrypty Pig Latin jako dane wejściowe i konwertuje te skrypty na zadania MapReduce.
Dlaczego potrzebujemy Apache Pig?
Programiści, którzy nie są zbyt dobrzy w Javie, zwykle mieli problemy z pracą z Hadoop, szczególnie podczas wykonywania jakichkolwiek zadań MapReduce. Apache Pig to dobrodziejstwo dla wszystkich takich programistów.
Za pomocą Pig Latin, programiści mogą łatwo wykonywać zadania MapReduce bez konieczności wpisywania skomplikowanych kodów w Javie.
Apache Pig używa multi-query approach, zmniejszając w ten sposób długość kodów. Na przykład operację, która wymagałaby wpisania 200 linii kodu (LoC) w Javie, można łatwo wykonać, wpisując zaledwie 10 LoC w Apache Pig. Ostatecznie Apache Pig skraca czas rozwoju prawie 16 razy.
Pig Latin jest SQL-like language a znajomość języka SQL jest łatwa do nauczenia się Apache Pig.
Apache Pig udostępnia wiele wbudowanych operatorów obsługujących operacje na danych, takie jak łączenie, filtry, porządkowanie itp. Ponadto udostępnia również zagnieżdżone typy danych, takie jak krotki, worki i mapy, których brakuje w MapReduce.
Funkcje Pig
Apache Pig ma następujące funkcje -
Rich set of operators - Zapewnia wielu operatorom wykonywanie operacji, takich jak łączenie, sortowanie, filtrowanie itp.
Ease of programming - Pig Latin jest podobna do SQL i łatwo jest napisać skrypt Pig, jeśli jesteś dobry w SQL.
Optimization opportunities - Zadania w Apache Pig automatycznie optymalizują ich wykonanie, więc programiści muszą skupić się tylko na semantyce języka.
Extensibility - Korzystając z istniejących operatorów, użytkownicy mogą opracowywać własne funkcje odczytu, przetwarzania i zapisu danych.
UDF’s - Pig zapewnia możliwość tworzenia User-defined Functions w innych językach programowania, takich jak Java, i wywołuj je lub osadzaj w skryptach Pig.
Handles all kinds of data- Apache Pig analizuje wszelkiego rodzaju dane, zarówno ustrukturyzowane, jak i nieustrukturyzowane. Przechowuje wyniki w HDFS.
Apache Pig Vs MapReduce
Poniżej wymienione są główne różnice między Apache Pig i MapReduce.
Apache Pig | MapReduce |
---|---|
Apache Pig to język przepływu danych. | MapReduce to paradygmat przetwarzania danych. |
Jest to język wysokiego poziomu. | MapReduce jest niskopoziomowe i sztywne. |
Wykonywanie operacji łączenia w Apache Pig jest dość proste. | Wykonywanie operacji łączenia między zestawami danych w MapReduce jest dość trudne. |
Każdy początkujący programista z podstawową znajomością języka SQL może wygodnie pracować z Apache Pig. | Ekspozycja na Javę musi działać z MapReduce. |
Apache Pig wykorzystuje podejście z wieloma zapytaniami, co znacznie zmniejsza długość kodów. | MapReduce będzie wymagało prawie 20 razy większej liczby linii do wykonania tego samego zadania. |
Nie ma potrzeby kompilacji. Podczas wykonywania każdy operator Apache Pig jest wewnętrznie konwertowany na zadanie MapReduce. | Zadania MapReduce mają długi proces kompilacji. |
Apache Pig Vs SQL
Poniżej wymienione są główne różnice między Apache Pig i SQL.
Świnia | SQL |
---|---|
Pig Latin to procedural język. | SQL to plik declarative język. |
W Apache Pig, schemajest opcjonalne. Możemy przechowywać dane bez projektowania schematu (wartości są przechowywane jako 01 $, 02 $ itd.) | Schemat jest obowiązkowy w SQL. |
Model danych w Apache Pig to nested relational. | Model danych używany w SQL is flat relational. |
Apache Pig zapewnia ograniczone możliwości dla Query optimization. | W SQL jest więcej możliwości optymalizacji zapytań. |
Oprócz powyższych różnic, Apache Pig Latin -
- Umożliwia podziały w rurociągu.
- Umożliwia programistom przechowywanie danych w dowolnym miejscu potoku.
- Deklaruje plany wykonania.
- Udostępnia operatory do wykonywania funkcji ETL (wyodrębnianie, przekształcanie i ładowanie).
Apache Pig Vs Hive
Zarówno Apache Pig, jak i Hive są używane do tworzenia zadań MapReduce. W niektórych przypadkach Hive działa na HDFS w podobny sposób, jak robi to Apache Pig. W poniższej tabeli wymieniliśmy kilka istotnych punktów, które odróżniają Apache Pig od Hive.
Apache Pig | Ul |
---|---|
Apache Pig używa języka o nazwie Pig Latin. Został pierwotnie utworzony o godzYahoo. | Hive używa języka o nazwie HiveQL. Został pierwotnie utworzony o godzFacebook. |
Pig Latin to język przepływu danych. | HiveQL to język przetwarzania zapytań. |
Pig Latin jest językiem proceduralnym i pasuje do paradygmatu potoku. | HiveQL to język deklaratywny. |
Apache Pig może obsługiwać dane strukturalne, nieustrukturyzowane i częściowo ustrukturyzowane. | Hive jest przeznaczony głównie dla danych strukturalnych. |
Zastosowania Apache Pig
Apache Pig jest zwykle używany przez analityków danych do wykonywania zadań obejmujących przetwarzanie ad-hoc i szybkie tworzenie prototypów. Używana jest świnia Apache -
- Przetwarzanie ogromnych źródeł danych, takich jak dzienniki internetowe.
- Przetwarzanie danych dla platform wyszukiwania.
- Przetwarzanie ładunków wrażliwych na czas.
Apache Pig - Historia
W 2006Apache Pig został opracowany jako projekt badawczy w Yahoo, w szczególności w celu tworzenia i wykonywania zadań MapReduce na każdym zbiorze danych. W2007Apache Pig pochodzi z otwartego źródła za pośrednictwem inkubatora Apache. W2008, ukazało się pierwsze wydanie Apache Pig. W2010, Apache Pig ukończył jako projekt najwyższego poziomu Apache.