Pig Latin - podstawy
Pig Latin to język używany do analizowania danych w Hadoop przy użyciu Apache Pig. W tym rozdziale omówimy podstawy języka Pig Latin, takie jak instrukcje Pig Latin, typy danych, operatory ogólne i relacyjne oraz UDF Pig Latin.
Pig Latin - model danych
Jak omówiono w poprzednich rozdziałach, model danych Pig jest w pełni zagnieżdżony. ZARelationjest najbardziej zewnętrzną strukturą modelu danych Pig Latin. I to jestbag gdzie -
- Torba to zbiór krotek.
- Krotka to uporządkowany zbiór pól.
- Pole to zbiór danych.
Pig Latin - Statemets
Podczas przetwarzania danych za pomocą Pig Latin, statements to podstawowe konstrukcje.
Te instrukcje działają z relations. Zawierająexpressions i schemas.
Każda instrukcja kończy się średnikiem (;).
Wykonamy różne operacje za pomocą operatorów dostarczonych przez Pig Latin, poprzez instrukcje.
Z wyjątkiem LOAD i STORE, podczas wykonywania wszystkich innych operacji, instrukcje Pig Latin przyjmują relację jako dane wejściowe i wytwarzają inną relację jako dane wyjściowe.
Gdy tylko wpiszesz Loadinstrukcji w powłoce Grunt, zostanie przeprowadzone sprawdzenie semantyczne. Aby zobaczyć zawartość schematu, musisz użyć rozszerzeniaDumpoperator. Dopiero po wykonaniudump operacji, zadanie MapReduce w celu załadowania danych do systemu plików zostanie wykonane.
Przykład
Poniżej podano instrukcję Pig Latin, która ładuje dane do Apache Pig.
grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as
( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
Pig Latin - typy danych
Podana poniżej tabela opisuje typy danych Pig Latin.
SN | Typ danych | Opis i przykład |
---|---|---|
1 | int | Reprezentuje podpisaną 32-bitową liczbę całkowitą. Example : 8 |
2 | długie | Reprezentuje podpisaną 64-bitową liczbę całkowitą. Example : 5L |
3 | pływak | Reprezentuje podpisany 32-bitowy zmiennoprzecinkowy. Example : 5,5 F. |
4 | podwójnie | Reprezentuje 64-bitowy zmiennoprzecinkowy. Example : 10,5 |
5 | chararray | Reprezentuje tablicę znaków (ciąg) w formacie Unicode UTF-8. Example : 'punkt poradnika' |
6 | Bytearray | Reprezentuje tablicę bajtów (obiekt blob). |
7 | Boolean | Reprezentuje wartość logiczną. Example : prawda fałsz. |
8 | Datetime | Reprezentuje datę i godzinę. Example : 1970-01-01T00: 00: 00.000 + 00: 00 |
9 | Biginteger | Reprezentuje Java BigInteger. Example : 60708090709 |
10 | Bigdecimal | Reprezentuje Java BigDecimal Example : 185,98376256272893883 |
Złożone typy | ||
11 | Tuple | Krotka to uporządkowany zbiór pól. Example : (raja, 30) |
12 | Torba | Torba to zbiór krotek. Example : {(raju, 30), (Mohhammad, 45)} |
13 | Mapa | Mapa to zestaw par klucz-wartość. Example : ['imię' # 'Raju', 'wiek' # 30] |
Wartości zerowe
Wartości dla wszystkich powyższych typów danych mogą wynosić NULL. Apache Pig traktuje wartości null w podobny sposób jak SQL.
Wartość null może być wartością nieznaną lub nieistniejącą. Jest używany jako symbol zastępczy wartości opcjonalnych. Te wartości zerowe mogą wystąpić naturalnie lub mogą być wynikiem operacji.
Pig Latin - operatory arytmetyczne
W poniższej tabeli opisano operatory arytmetyczne języka Pig Latin. Załóżmy, że a = 10 i b = 20.
Operator | Opis | Przykład |
---|---|---|
+ | Addition - Dodaje wartości po obu stronach operatora |
a + b da 30 |
- | Subtraction - Odejmuje operand prawej ręki od operandu lewej ręki |
a - b da −10 |
* | Multiplication - Mnoży wartości po obu stronach operatora |
a * b da 200 |
/ | Division - Dzieli operand lewej ręki przez operand prawej ręki |
b / a da 2 |
% | Modulus - Dzieli operand po lewej stronie przez operand po prawej stronie i zwraca resztę |
b% a da 0 |
? : | Bincond- Ocenia operatory boolowskie. Ma trzy operandy, jak pokazano poniżej. zmienna x = (wyrażenie)? value1 jeśli prawda :value2 jeśli fałszywe . |
b = (a == 1)? 20:30; jeśli a = 1, wartość b wynosi 20. jeśli a! = 1, wartość b wynosi 30. |
WALIZKA GDY NASTĘPNIE ELSE END |
Case - Operator przypadku jest odpowiednikiem zagnieżdżonego operatora bincond. |
CASE f2% 2 KIEDY 0 TO `` równe '' KIEDY 1 TO „nieparzyste” KONIEC |
Pig Latin - operatory porównania
W poniższej tabeli opisano operatory porównania języka Pig Latin.
Operator | Opis | Przykład |
---|---|---|
== | Equal- Sprawdza, czy wartości dwóch operandów są równe, czy nie; jeśli tak, to warunek staje się prawdziwy. |
(a = b) nie jest prawdą |
! = | Not Equal- Sprawdza, czy wartości dwóch operandów są równe, czy nie. Jeśli wartości nie są równe, warunek staje się prawdziwy. |
(a! = b) jest prawdą. |
> | Greater than- Sprawdza, czy wartość lewego operandu jest większa niż wartość prawego operandu. Jeśli tak, to warunek staje się prawdziwy. |
(a> b) nie jest prawdą. |
< | Less than- Sprawdza, czy wartość lewego operandu jest mniejsza niż wartość prawego operandu. Jeśli tak, to warunek staje się prawdziwy. |
(a <b) jest prawdą. |
> = | Greater than or equal to- Sprawdza, czy wartość lewego operandu jest większa lub równa wartości prawego operandu. Jeśli tak, to warunek staje się prawdziwy. |
(a> = b) nie jest prawdą. |
<= | Less than or equal to- Sprawdza, czy wartość lewego operandu jest mniejsza lub równa wartości prawego operandu. Jeśli tak, to warunek staje się prawdziwy. |
(a <= b) jest prawdą. |
mecze | Pattern matching - Sprawdza, czy łańcuch po lewej stronie pasuje do stałej po prawej stronie. |
f1 pasuje do „. * tutorial. *” |
Pig Latin - Type Construction Operators
W poniższej tabeli opisano operatory konstrukcji Type języka Pig Latin.
Operator | Opis | Przykład |
---|---|---|
() | Tuple constructor operator - Ten operator jest używany do tworzenia krotki. |
(Raju, 30 lat) |
{} | Bag constructor operator - Ten operator jest używany do budowy worka. |
{(Raju, 30), (Mohammad, 45)} |
[] | Map constructor operator - Ten operator jest używany do tworzenia krotki. |
[imię # Raja, wiek # 30] |
Pig Latin - Relational Operations
W poniższej tabeli opisano operatory relacyjne języka Pig Latin.
Operator | Opis |
---|---|
Loading and Storing | |
ZAŁADUJ | Aby załadować dane z systemu plików (lokalny / HDFS) do relacji. |
SKLEP | Aby zapisać relację do systemu plików (lokalny / HDFS). |
Filtracja | |
FILTR | Aby usunąć niechciane wiersze z relacji. |
ODRĘBNY | Aby usunąć zduplikowane wiersze z relacji. |
FOREACH, GENERUJ | Generowanie przekształceń danych na podstawie kolumn danych. |
STRUMIEŃ | Aby przekształcić relację za pomocą zewnętrznego programu. |
Grupowanie i łączenie | |
PRZYSTĄP | Aby połączyć dwie lub więcej relacji. |
COGROUP | Grupowanie danych w dwie lub więcej relacji. |
GRUPA | Grupowanie danych w jednej relacji. |
KRZYŻ | Tworzenie iloczynu krzyżowego dwóch lub więcej relacji. |
Sortowanie | |
ZAMÓWIENIE | Ułożenie relacji w posortowanej kolejności w oparciu o jedno lub więcej pól (rosnąco lub malejąco). |
LIMIT | Aby uzyskać ograniczoną liczbę krotek z relacji. |
Łączenie i dzielenie | |
UNIA | Aby połączyć dwie lub więcej relacji w jedną relację. |
ROZDZIELAĆ | Dzielenie pojedynczej relacji na dwie lub więcej relacji. |
Operatorzy diagnostyczni | |
WYSYPISKO | Aby wydrukować zawartość relacji na konsoli. |
OPISAĆ | Opisać schemat relacji. |
WYJAŚNIĆ | Aby wyświetlić plany wykonania logiczne, fizyczne lub MapReduce w celu obliczenia relacji. |
ZILUSTROWAĆ | Aby wyświetlić krok po kroku wykonanie serii instrukcji. |