Apache Pig - Architettura

Il linguaggio utilizzato per analizzare i dati in Hadoop utilizzando Pig è noto come Pig Latin. È un linguaggio di elaborazione dati di alto livello che fornisce un ricco set di tipi di dati e operatori per eseguire varie operazioni sui dati.

Per eseguire un compito particolare, i programmatori che utilizzano Pig, devono scrivere uno script Pig utilizzando il linguaggio Pig Latin ed eseguirli utilizzando uno qualsiasi dei meccanismi di esecuzione (Grunt Shell, UDF, Embedded). Dopo l'esecuzione, questi script passeranno attraverso una serie di trasformazioni applicate da Pig Framework, per produrre l'output desiderato.

Internamente, Apache Pig converte questi script in una serie di lavori MapReduce e, quindi, semplifica il lavoro del programmatore. L'architettura di Apache Pig è mostrata di seguito.

Componenti di Apache Pig

Come mostrato nella figura, ci sono vari componenti nel framework Apache Pig. Diamo uno sguardo ai componenti principali.

Parser

Inizialmente gli script Pig vengono gestiti dal Parser. Controlla la sintassi dello script, esegue il controllo del tipo e altri controlli vari. L'output del parser sarà un DAG (grafico aciclico diretto), che rappresenta le istruzioni Pig Latin e gli operatori logici.

Nel DAG, gli operatori logici dello script sono rappresentati come nodi e i flussi di dati sono rappresentati come bordi.

Optimizer

Il piano logico (DAG) viene passato all'ottimizzatore logico, che esegue le ottimizzazioni logiche come la proiezione e il pushdown.

Compilatore

Il compilatore compila il piano logico ottimizzato in una serie di lavori MapReduce.

Motore di esecuzione

Infine, i lavori MapReduce vengono inviati a Hadoop in un ordine ordinato. Infine, questi processi MapReduce vengono eseguiti su Hadoop producendo i risultati desiderati.

Pig Latin Data Model

Il modello di dati di Pig Latin è completamente annidato e consente tipi di dati non atomici complessi come map e tuple. Di seguito è riportata la rappresentazione schematica del modello dati di Pig Latin.

Atomo

Qualsiasi singolo valore in Pig Latin, indipendentemente dai dati, è noto come tipo Atom. Viene memorizzato come stringa e può essere utilizzato come stringa e numero. int, long, float, double, chararray e bytearray sono i valori atomici di Pig. Un pezzo di dati o un semplice valore atomico è noto comefield.

Example - "raja" o "30"

Tupla

Un record formato da un insieme ordinato di campi è noto come tupla, i campi possono essere di qualsiasi tipo. Una tupla è simile a una riga in una tabella di RDBMS.

Example - (Raja, 30 anni)

Sacchetto

Una borsa è un insieme non ordinato di tuple. In altre parole, una raccolta di tuple (non univoche) è nota come bag. Ogni tupla può avere un numero qualsiasi di campi (schema flessibile). Una borsa è rappresentata da "{}". È simile a una tabella in RDBMS, ma a differenza di una tabella in RDBMS, non è necessario che ogni tupla contenga lo stesso numero di campi o che i campi nella stessa posizione (colonna) abbiano lo stesso tipo.

Example - {(Raja, 30), (Mohammad, 45)}

Una borsa può essere un campo in una relazione; in quel contesto, è noto comeinner bag.

Example - {Raja, 30, {9848022338, [email protected],}}

Carta geografica

Una mappa (o mappa dati) è un insieme di coppie chiave-valore. Ilkeydeve essere di tipo chararray e dovrebbe essere univoco. Ilvaluepotrebbe essere di qualsiasi tipo. È rappresentato da "[]"

Example - [nome # Raja, età # 30]

Relazione

Una relazione è un insieme di tuple. Le relazioni in Pig Latin non sono ordinate (non vi è alcuna garanzia che le tuple vengano elaborate in un ordine particolare).