Usare Pig con Hadoop in HDInsight

Informazioni su come usare Apache Pig con HDInsight...

Pig è una piattaforma che consente la creazione di programmi per Hadoop usando un linguaggio procedurale denominato Pig Latin. Pig è un'alternativa a Java per la creazione di soluzioni MapReduce ed è incluso in Azure HDInsight. Usare la tabella seguente per individuare i vari modi in cui Pig può essere usato con HDInsight:

Usare questo se si desidera... ...una shell interattiva ...elaborazionebatch ...con questo sistema operativo cluster ...da questo sistema operativo client
SSH Linux Linux, Unix, Mac OS X o Windows
API REST   Linux o Windows Linux, Unix, Mac OS X o Windows
.NET SDK per Hadoop   Linux o Windows Windows (per ora)
Windows PowerShell   Linux o Windows Windows
Desktop remoto (HDInsight 3.2 e 3.3) Windows Windows
Importante

Linux è l'unico sistema operativo usato in HDInsight versione 3.4 o successiva. Per altre informazioni, vedere la sezione relativa al ritiro di HDInsight in Windows.

Perché usare Pig

Quando si elaborano dati usando MapReduce in Hadoop, uno dei problemi principali è riuscire a implementare la logica di elaborazione usando solo una mappa e una funzione di riduzione. In caso di esigenze di elaborazione complesse, è spesso necessario interrompere l'elaborazione in più operazioni di MapReduce concatenate insieme per ottenere il risultato desiderato.

Pig consente di definire l'elaborazione come una serie di trasformazioni a cui vengono sottoposti i dati fino a raggiungere l'output desiderato.

Il linguaggio Pig Latin consente di descrivere il flusso dati dall'input non elaborato fino all'output desiderato, attraverso una o più trasformazioni. I programmi in Pig Latin seguono questo modello generale:

  • Load: lettura dei dati da manipolare dal file system

  • Transform: manipolazione dei dati

  • Dump or store: output dei dati sullo schermo o archiviazione per l'elaborazione

Funzioni definite dall'utente

Pig Latin supporta anche funzioni definite dall'utente (UDF), che consentono di richiamare componenti esterni in grado di implementare logica difficile da modellare in Pig Latin.

Per altre informazioni su Pig Latin, vedere il manuale di riferimento di Pig Latin 1 e il manuale di riferimento di Pig Latin 2.

Per un esempio sull'uso di funzioni definite dall'utente con Pig, vedere i documenti seguenti:

Dati di esempio

HDInsight offre diversi set di dati di esempio, archiviati nelle directory /example/data e /HdiSamples. Queste directory si trovano nella risorsa di archiviazione predefinita per il cluster. L'esempio di Pig in questo documento usa il file log4j da /example/data/sample.log.

Ogni log all'interno del file è costituito da una riga di campi che contiene un campo [LOG LEVEL] per visualizzare il tipo e la gravità. Ad esempio:

2012-02-03 20:26:41 SampleClass3 [ERROR] verbose detail for id 1527353937

Nell'esempio precedente, il livello log è ERROR.

Nota

È anche possibile generare un file log4j usando lo strumento di registrazione Apache Log4j e quindi caricandolo nel BLOB. Per istruzioni, vedere Caricamento di dati in HDInsight . Per altre informazioni sul modo in cui HDInsight usa l'archiviazione BLOB di Azure, vedere Usare l'archiviazione BLOB di Azure con HDInsight.

Processo di esempio

Il processo Pig Latin seguente carica il file sample.log dalla risorsa di archiviazione predefinita per il cluster HDInsight. Esegue quindi una serie di trasformazioni che generano un conteggio delle occorrenze di ciascun livello di log presente nei dati di input. I risultati vengono scritti in STDOUT.

LOGS = LOAD 'wasb:///example/data/sample.log';
LEVELS = foreach LOGS generate REGEX_EXTRACT($0, '(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)', 1)  as LOGLEVEL;
FILTEREDLEVELS = FILTER LEVELS by LOGLEVEL is not null;
GROUPEDLEVELS = GROUP FILTEREDLEVELS by LOGLEVEL;
FREQUENCIES = foreach GROUPEDLEVELS generate group as LOGLEVEL, COUNT(FILTEREDLEVELS.LOGLEVEL) as COUNT;
RESULT = order FREQUENCIES by COUNT desc;
DUMP RESULT;

L'immagine seguente illustra un riepilogo degli effetti di ogni trasformazione sui dati.

Rappresentazione grafica delle trasformazioni

Eseguire il processo Pig Latin

HDInsight è in grado di eseguire processi Pig Latin in vari modi. Usare la tabella seguente per decidere il metodo più adatto alle proprie esigenze, quindi fare clic sul collegamento per visualizzare una procedura dettagliata.

Usare questo se si desidera... ...una shell interattiva ...elaborazionebatch ...con questo sistema operativo cluster ...da questo client
SSH Linux Linux, Unix, Mac OS X o Windows
Curl   Linux o Windows Linux, Unix, Mac OS X o Windows
.NET SDK per Hadoop   Linux o Windows Windows (per ora)
Windows PowerShell   Linux o Windows Windows
Desktop remoto (HDInsight 3.2 e 3.3) Windows Windows
Importante

Linux è l'unico sistema operativo usato in HDInsight versione 3.4 o successiva. Per altre informazioni, vedere la sezione relativa al ritiro di HDInsight in Windows.

Pig e SQL Server Integration Services

È possibile usare SQL Server Integration Services (SSIS) per eseguire un processo Pig. Il Feature Pack di Azure per SSIS fornisce i seguenti componenti che funzionano con i processi Pig in HDInsight.

Altre informazioni sul Feature Pack di Azure per SSIS sono disponibili qui.

Passaggi successivi

Dopo avere appreso come usare Pig con HDInsight, vedere i collegamenti seguenti per scoprire altri modi di usare Azure HDInsight.