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. |