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.