Un'introduzione ad Apache Pig per principianti assoluti!!

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati

Questo articolo si concentra su Apache Pig. È una piattaforma di alto livello per elaborare e analizzare una grande quantità di dati.

PANORAMICA

Se osserviamo la panoramica di alto livello di Pig, Pig è un'astrazione di MapReduce. Maiale corre su Hadoop. Perciò, utilizza sia il file system distribuito Hadoop (HDFS) come il sistema di elaborazione Hadoop, Riduci mappa. I flussi di dati vengono eseguiti
da un motore. Utilizzato per analizzare i set di dati come flussi di dati. Include un linguaggio di alto livello chiamato Pig Latin per esprimere questi flussi di dati.

La voce di Pig è Pig Latin, che diventeranno lavori MapReduce. Pig utilizza i trucchi di MapReduce per eseguire tutta l'elaborazione dei dati. Combina gli script Pig Latin in una serie di uno o più lavori MapReduce che vengono eseguiti.

Apache Pig è stato progettato da Yahoo perché è facile da imparare e con cui lavorare.. Quindi, Maiale rende Hadoop abbastanza facile. Apache Pig è stato sviluppato perché la programmazione di MapReduce stava diventando piuttosto difficile e molti utenti di MapReduce non sono a proprio agio con i linguaggi dichiarativi. Ora, Pig è un progetto open source sotto Apache.

SOMMARIO

  1. Caratteristiche del maiale
  2. Cerdo vs MapReduce
  3. Architettura del maiale
  4. Opzioni per la corsa dei maiali
  5. Comandi di esecuzione Pig di base
  6. Tipi di dati suini
  7. Operatori suini
  8. Esempio di scrittura latina di maiale

1. CARATTERISTICHE DEL MAIALE

Diamo un'occhiata ad alcune delle caratteristiche di Pig.

  • Ha un ricco set di operatori come join, ordine, eccetera.
  • È facile da programmare in quanto è simile a SQL.
  • Le attività in Apache Pig sono state convertite automaticamente in lavori MapReduce. I programmatori dovrebbero concentrarsi solo sulla semantica del linguaggio e non su MapReduce.
  • Puoi creare le tue funzioni usando Pig.
  • Le funzioni in altri linguaggi di programmazione come Java possono essere incorporate negli script Pig Latin.
  • Apache Pig può gestire
    tutti i tipi di dati, come dati strutturati, non strutturato e semi-strutturato e
    memorizza il risultato in HDFS.

2. CERDO VS MAPREDUCE

Vediamo la differenza tra Pig e MapReduce.

Il maiale ha diversi vantaggi rispetto a MapReduce.

Apache Pig è un linguaggio per il flusso di dati. Significa che consente agli utenti di descrivere come dovrebbero essere letti, elaborare e quindi memorizzare i dati da uno o più input a uno o più output in parallelo. Mentre MapReduce, In secondo luogo, è uno stile di programmazione.

Apache Pig è un linguaggio di alto livello, mentre MapReduce è compilato in codice java.

La sintassi Pig per eseguire join e file multipli è molto intuitiva e abbastanza semplice come SQL. MappaRiduci codice
diventa complesso se vuoi scrivere operazioni di join.

La curva di apprendimento di Apache Pig è molto piccola. L'esperienza nelle librerie Java e MapReduce è un must
per eseguire il codice MapReduce.

Gli script di Apache Pig possono fare l'equivalente di più righe di codice MapReduce e il codice MapReduce necessita di più righe di codice per eseguire le stesse operazioni.

Apache Pig è facile da eseguire il debug e da testare, mentre i programmi MapReduce impiegano molto tempo per codificare, Tentativo, eccetera. Pig Latin è meno costoso di MapReduce.

3. ARCHITETTURA SUINA

Ora diamo un'occhiata all'architettura di Pig.

24764maiale1-8305991

Fonte

Il maiale si siede sopra Hadoop. Gli script Pig possono essere eseguiti nella shell Grunt o nel server Pig. Il runtime Pig the Pass ottimizza e compila lo script e alla fine lo converte in lavori MapReduce. Utilizza HDFS per archiviare dati intermedi tra i lavori MapReduce e quindi scrive il suo output su HDFS.

4. OPZIONI DI ESECUZIONE DEL MAIALE

Apache Pig può eseguire due modalità di esecuzione. Entrambi producono gli stessi risultati.

4.1. modalità locale

Comando in passerelle

maiale -x locale

4.2. Modo Hadoop

Comando in passerelle

maiale -exectype mapreduce

Apache Pig può essere eseguito in tre modi nelle due modalità sopra.

  1. Modalità batch / file di script: metti i comandi Pig in un file di script ed esegui lo script
  2. Programma integrato / UDF: incorporare i comandi Pig in Java ed eseguire gli script

5. COMANDI DI GUSCIO DI GRUNT DI MAIALE

I gusci di grunt possono essere usati per scrivere script Pig Latin. I comandi della shell possono essere invocati usando i comandi fs e sh. Vediamo alcune basi
Comandi maiale.

5.1. comando fs

Il comando fs ti consente di eseguire comandi HDFS da Pig

5.1.1 Per elencare tutte le directory in HDFS

grugnito> fs -ls;

Ora, verranno visualizzati tutti i file in HDFS.

5.1.2. Per creare una nuova directory mydir in HDFS

grugnito> fs -mkdir miadir/;

Il comando precedente creerà una nuova directory chiamata mydir in HDFS.

5.1.3. Per eliminare una directory

grugnito> fs -rmdir miadir;

Il comando precedente eliminerà la directory creata mydir.

5.1.4. Per copiare un file su HDFS

concedere> fs -put sales.txt sales/;

Qui, il file chiamato sales.txt è il file sorgente che verrà copiato nella directory di destinazione in HDFS, vale a dire, saldi.

5.1.5. Per uscire da Grunt Shell

grugnito> uscire;

Il comando precedente uscirà dalla shell grunt.

5.2. comando sh

Il comando sh ti consente di eseguire un'istruzione Unix da Pig

5.2.1. Per mostrare la data corrente

grugnito> sh data;

Questo comando visualizzerà la data corrente.

5.2.2. Per elencare i file locali

grugnito> sh ls;

Questo comando mostrerà tutti i file sul sistema locale.

5.2.3. Per eseguire Pig Latin da grunt shell

grugnito> eseguire salesreport.pig;

Il comando precedente eseguirà un file di script Pig Latin “reportvendite.pig” dal guscio grugnito.

5.2.4. Per eseguire Pig Latin dal prompt di Unix

$rapporto vendite suini.pig;

Il comando precedente eseguirà un file di script Pig Latin "salesreport.pig" dal prompt di Unix.

6. P

Pig Latin è costituito dai seguenti tipi di dati.

6.1. Atomo di dati

È un valore unico. Può essere una stringa o un numero. Sono di tipo scalare come int, galleggiante, Doppio, eccetera.

Ad esempio, “John”, 9.0

6.2. Doppio

Una tupla è simile a un record con una sequenza di campi. Può essere di qualsiasi tipo di dato.

Ad esempio, ('John', "Giacomo") è una tupla.

6.3. Borsa dati

Consiste in una raccolta di tuple che è equivalente a a “tavolo” e SQL. Le tuple non sono uniche e possono avere un numero arbitrario di campi, ognuno può essere di qualsiasi tipo.

Ad esempio, {('John', "Giacomo"), (‘ re ',’ segnare ')} è un insieme di dati equivalente alla seguente tabella in SQL.

6.4. Mappa dati

Questo tipo di dati
contiene una raccolta di coppie chiave-valore. Qui, la chiave deve essere un singolo carattere. I valori possono essere di qualsiasi tipo.

Ad esempio, [nome#('John', "Giacomo"), età#22] è una mappa dati dove nome, l'età è fondamentale e ('John,’ Giacomo'), 22 sono valori.

7. OPERATORI SUINI

Di seguito è riportato il contenuto del file student.txt.

John,23,Hyderabad
James,45,Hyderabad
Sam,33,Chennai
,56,Delhi
,43,Mumbai

7.1. CARICO

Carica i dati da un dato file system.

A = CARICA 'student.txt' AS (nome: chararray, età: int, città: chararray);

Dati dei file degli studenti con nomi di colonne come "nome", 'età', 'cittadina’ verrà caricato in una variabile A.

7.2. SCARICO

L'operatore DUMP viene utilizzato per visualizzare il contenuto di una relazione. Qui, verrà visualizzato il contenuto di A.

SCARICA A
//risultati
(John,23,Hyderabad)
(James,45,Hyderabad)
(Sam,33,Chennai)
(,56,Delhi)
(,43,Mumbai)

7.3. NEGOZIO

La funzione di salvataggio salva i risultati nel file system.

STORE A in "myoutput" utilizzando PigStorage('*');

Qui, i dati presenti in A verranno memorizzati in myoutput separati da '*'.

SCARICA il mio output; 
//results
John*23*Hyderabad
James*45*Hyderabad
Sam*33*Chennai
*56*Delhi
*43*Mumbai

7.4. FILTRO

B = FILTRO A per nome non è nullo;

L'operatore FILTER filtrerà una tabella con alcune condizioni. Qui, il nome è la colonna in A. I valori non vuoti nel nome verranno memorizzati nella variabile B.

SCARICA B;
//risultati
(John,23,Hyderabad)
(James,45,Hyderabad)
(Sam,33,Chennai)

7.5. PER OGNUNO ​​DA GENERARE

C = FOREACH A GENERATE nome, città;

L'operatore FOREACH è abituato ad accedere ai singoli record. Qui, le righe presenti nel nome e nella città saranno ricavate da A e memorizzate in C.

SCARICA C
//risultati
(John,Hyderabad)
(James,Hyderabad)
(Sam,Chennai)
(,Delhi)
(,Mumbai)

8. ESEMPIO DI SCRIPT LATINO DI MAIALE

Abbiamo un file di persone i cui campi sono l'identificazione del dipendente, il nome e gli orari.

001,Rajiv,21
002,siddart,12
003,Rajesh,22

Primo, caricare questi dati in un impiegato variabile. Filtralo per ore in meno di 20 e conservare part-time. Ordina part-time in ordine decrescente e salvalo in un altro file chiamato part_time. Visualizza contenuto.

La sceneggiatura sarà

impiegato = Carica "persone" come (empid, nome, ore);
parttime = FILTRA dipendente PER Ore < 20;
sorted = ORDINA parttime per ore DESC;
NEGOZIO ordinato IN "part_time";
DUMP ordinato;
DESCRIVERE ordinato;
//risultati
(003,Rajesh,22)
(001,Rajiv,21)

NOTE FINALI

Queste sono alcune delle basi di Apache Pig. Spero che ti sia piaciuto leggere questo articolo. Inizia a praticare
con l'ambiente Cloudera.

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.