Pig Latin - Nozioni di base

Pig Latin è la lingua utilizzata per analizzare i dati in Hadoop utilizzando Apache Pig. In questo capitolo, discuteremo le basi di Pig Latin come le istruzioni Pig Latin, i tipi di dati, gli operatori generali e relazionali e le UDF di Pig Latin.

Pig Latin - Modello di dati

Come discusso nei capitoli precedenti, il modello dati di Pig è completamente annidato. UNRelationè la struttura più esterna del modello di dati Pig Latin. Ed è un filebag dove -

  • Una borsa è una raccolta di tuple.
  • Una tupla è un insieme ordinato di campi.
  • Un campo è un pezzo di dati.

Pig Latin - Statemets

Durante l'elaborazione dei dati utilizzando Pig Latin, statements sono i costrutti di base.

  • Queste affermazioni funzionano con relations. Loro includonoexpressions e schemas.

  • Ogni istruzione termina con un punto e virgola (;).

  • Eseguiremo varie operazioni utilizzando operatori forniti da Pig Latin, tramite istruzioni.

  • Tranne LOAD e STORE, mentre eseguono tutte le altre operazioni, le istruzioni Pig Latin accettano una relazione come input e producono un'altra relazione come output.

  • Non appena si entra in un file Loaddichiarazione nella shell Grunt, verrà eseguita la sua verifica semantica. Per vedere il contenuto dello schema, è necessario utilizzare ilDumpoperatore. Solo dopo aver eseguito ildump operazione, verrà eseguito il lavoro MapReduce per il caricamento dei dati nel file system.

Esempio

Di seguito è riportata un'istruzione Pig Latin, che carica i dati su Apache Pig.

grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as 
   ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

Pig Latin - Tipi di dati

La tabella riportata di seguito descrive i tipi di dati Pig Latin.

SN Tipo di dati Descrizione ed esempio
1 int

Rappresenta un numero intero a 32 bit con segno.

Example : 8

2 lungo

Rappresenta un intero a 64 bit con segno.

Example : 5L

3 galleggiante

Rappresenta una virgola mobile a 32 bit con segno.

Example : 5.5F

4 Doppio

Rappresenta una virgola mobile a 64 bit.

Example : 10.5

5 chararray

Rappresenta una matrice di caratteri (stringa) in formato Unicode UTF-8.

Example : "punto tutorial"

6 Bytearray

Rappresenta una matrice di byte (BLOB).

7 Booleano

Rappresenta un valore booleano.

Example : vero falso.

8 Appuntamento

Rappresenta una data-ora.

Example : 1970-01-01T00: 00: 00.000 + 00: 00

9 Biginteger

Rappresenta un BigInteger Java.

Example : 60708090709

10 Bigdecimal

Rappresenta un Java BigDecimal

Example : 185.98376256272893883

Tipi complessi
11 Tupla

Una tupla è un insieme ordinato di campi.

Example : (raja, 30)

12 Sacchetto

Una borsa è una raccolta di tuple.

Example : {(raju, 30), (Mohhammad, 45)}

13 Carta geografica

Una mappa è un insieme di coppie chiave-valore.

Example : ["name" # "Raju", "age" # 30]

Valori nulli

I valori per tutti i tipi di dati precedenti possono essere NULL. Apache Pig tratta i valori null in modo simile a SQL.

Un valore nullo può essere un valore sconosciuto o un valore inesistente. Viene utilizzato come segnaposto per valori facoltativi. Questi valori nulli possono verificarsi naturalmente o possono essere il risultato di un'operazione.

Pig Latin - Operatori aritmetici

La tabella seguente descrive gli operatori aritmetici di Pig Latin. Supponiamo che a = 10 eb = 20.

Operatore Descrizione Esempio
+

Addition - Aggiunge valori su entrambi i lati dell'operatore

a + b darà 30
-

Subtraction - Sottrae l'operando destro da quello sinistro

a - b darà −10
*

Multiplication - Moltiplica i valori su entrambi i lati dell'operatore

a * b darà 200
/

Division - Divide l'operando di sinistra per l'operando di destra

b / a darà 2
%

Modulus - Divide l'operando sinistro per l'operando destro e restituisce il resto

b% a darà 0
? :

Bincond- Valuta gli operatori booleani. Ha tre operandi come mostrato di seguito.

variabile x = (espressione)? value1 se vero :value2 se falso .

b = (a == 1)? 20:30;

se a = 1 il valore di b è 20.

se a! = 1 il valore di b è 30.

ASTUCCIO

QUANDO

POI

ALTRO FINE

Case - L'operatore case è equivalente all'operatore bincond annidato.

CASO f2% 2

QUANDO 0 POI 'pari'

WHEN 1 THEN 'dispari'

FINE

Pig Latin - Operatori di confronto

La tabella seguente descrive gli operatori di confronto di Pig Latin.

Operatore Descrizione Esempio
==

Equal- Controlla se i valori di due operandi sono uguali o meno; se sì, allora la condizione diventa vera.

(a = b) non è vero
! =

Not Equal- Controlla se i valori di due operandi sono uguali o meno. Se i valori non sono uguali, la condizione diventa vera.

(a! = b) è vero.
>

Greater than- Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro. Se sì, la condizione diventa vera.

(a> b) non è vero.
<

Less than- Controlla se il valore dell'operando sinistro è inferiore al valore dell'operando destro. Se sì, la condizione diventa vera.

(a <b) è vero.
> =

Greater than or equal to- Controlla se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro. Se sì, la condizione diventa vera.

(a> = b) non è vero.
<=

Less than or equal to- Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro. Se sì, la condizione diventa vera.

(a <= b) è vero.
partite

Pattern matching - Controlla se la stringa a sinistra corrisponde con la costante a destra.

f1 corrisponde a ". * tutorial. *"

Pig Latin - Operatori di costruzione di tipo

La tabella seguente descrive gli operatori di costruzione del tipo di Pig Latin.

Operatore Descrizione Esempio
()

Tuple constructor operator - Questo operatore viene utilizzato per costruire una tupla.

(Raju, 30)
{}

Bag constructor operator - Questo operatore viene utilizzato per costruire una borsa.

{(Raju, 30), (Mohammad, 45)}
[]

Map constructor operator - Questo operatore viene utilizzato per costruire una tupla.

[nome # Raja, età # 30]

Pig Latin - Operazioni relazionali

La tabella seguente descrive gli operatori relazionali di Pig Latin.

Operatore Descrizione
Loading and Storing
CARICARE Per caricare i dati dal file system (locale / HDFS) in una relazione.
NEGOZIO Per salvare una relazione con il file system (locale / HDFS).
Filtraggio
FILTRO Per rimuovere righe indesiderate da una relazione.
DISTINTO Per rimuovere righe duplicate da una relazione.
AVANTI, GENERA Per generare trasformazioni di dati in base a colonne di dati.
STREAM Trasformare una relazione utilizzando un programma esterno.
Raggruppamento e unione
ADERIRE Per unire due o più relazioni.
COGROUP Per raggruppare i dati in due o più relazioni.
GRUPPO Per raggruppare i dati in un'unica relazione.
ATTRAVERSARE Per creare il prodotto incrociato di due o più relazioni.
Ordinamento
ORDINE Per disporre una relazione in un ordine ordinato in base a uno o più campi (crescente o decrescente).
LIMITE Per ottenere un numero limitato di tuple da una relazione.
Combinazione e divisione
UNIONE Per combinare due o più relazioni in un'unica relazione.
DIVISO Per dividere una singola relazione in due o più relazioni.
Operatori diagnostici
DUMP Per stampare il contenuto di una relazione sulla console.
DESCRIVERE Descrivere lo schema di una relazione.
SPIEGARE Per visualizzare i piani di esecuzione logici, fisici o MapReduce per calcolare una relazione.
ILLUSTRARE Per visualizzare l'esecuzione passo passo di una serie di istruzioni.