Eseguire processi Pig con Hadoop in HDInsight tramite REST

Informazioni su come eseguire processi Pig Latin inviando richieste REST a un cluster HDInsight di Azure. Per illustrare come poter interagire con HDInsight usando l'API REST WebHCat, viene usato Curl.

Nota

Se si ha già familiarità con l'uso di server Hadoop basati su Linux ma non si è esperti di HDInsight, vedere Informazioni sull'uso di HDInsight in Linux.

Prerequisiti

  • Un cluster Azure HDInsight (Hadoop in HDInsight) (basato su Linux o basato su 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.

  • Curl

  • jq

Eseguire processi Pig mediante Curl

Nota

L'API REST viene protetta tramite l' autenticazione dell'accesso di base. Per essere certi che le credenziali vengano inviate al server in modo sicuro, eseguire sempre le richieste usando il protocollo Secure HTTP (HTTPS).

Quando si usano i comandi riportati in questa sezione, sostituire USERNAME con l'utente da autenticare nel cluster e PASSWORD con la password dell'account utente. Sostituire CLUSTERNAME con il nome del cluster.

  1. Da una riga di comando usare il comando seguente per verificare che sia possibile connettersi al cluster HDInsight:

    curl -u USERNAME:PASSWORD -G https://CLUSTERNAME.azurehdinsight.net/templeton/v1/status
    

    Dovrebbe essere visualizzata la risposta JSON seguente:

     {"status":"ok","version":"v1"}
    

    I parametri usati in questo comando sono i seguenti:

    • -u: il nome utente e la password usati per autenticare la richiesta.
    • -G: indica che è una richiesta GET.

      L'inizio dell'URL, https://CLUSTERNAME.azurehdinsight.net/templeton/v1, sarà uguale per tutte le richieste. Il percorso, /status, indica che la richiesta deve restituire lo stato di WebHCat, noto anche come Templeton, per il server.

  2. Usare il seguente codice per inviare un processo Pig Latin al cluster:

    curl -u USERNAME:PASSWORD -d user.name=USERNAME -d execute="LOGS=LOAD+'/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;" -d statusdir="/example/pigcurl" https://CLUSTERNAME.azurehdinsight.net/templeton/v1/pig
    

    I parametri usati in questo comando sono i seguenti:

    • -d: dato che -G non viene usato, la richiesta userà il metodo POST per impostazione predefinita. -d specifica i valori di dati che vengono inviati con la richiesta.

    • user.name: l'utente che esegue il comando.

    • execute: le istruzioni Pig Latin da eseguire.
    • statusdir: la directory in cui è scritto lo stato del processo.

      Nota

      Si noti che gli spazi tra le istruzioni Pig Latin vengono sostituiti dal carattere + se è in uso Curl.

      Questo comando dovrebbe restituire un ID processo utilizzabile per verificare lo stato del processo, ad esempio:

      {"id":"job_1415651640909_0026"}

  3. Per verificare lo stato del processo, usare il comando seguente:

    curl -G -u USERNAME:PASSWORD -d user.name=USERNAME https://CLUSTERNAME.azurehdinsight.net/templeton/v1/jobs/JOBID | jq .status.state
    

    Sostituire JOBID con il valore restituito nel passaggio precedente. Se, ad esempio, il valore restituito è {"id":"job_1415651640909_0026"}, JOBID sarà job_1415651640909_0026.

    Se il processo è stato completato, lo stato è SUCCEEDED.

    Nota

    Questa richiesta Curl restituisce un documento JSON (JavaScript Object Notation) con informazioni sul processo e jq viene usato per recuperare il valore di stato.

Visualizzare risultati

Quando lo stato del processo viene modificato in SUCCEEDED, è possibile recuperare i risultati del processo. Il parametro statusdir passato con la query contiene il percorso del file di output; in questo caso /example/pigcurl.

HDInsight usa l'archiviazione di Azure o Azure Data Lake Store come archivio dati predefinito. In base all'archivio usato, sono disponibili vari modi per ottenere i dati. Per altre informazioni, vedere la sezione relativa all'archiviazione del documento Informazioni sull'uso di HDInsight in Linux.

Riepilogo

Come illustrato in questo documento, è possibile usare una richiesta HTTP non elaborata per eseguire, monitorare e visualizzare i risultati dei processi Pig nel cluster HDInsight.

Per altre informazioni sull'interfaccia REST usata in questo articolo, vedere le informazioni di riferimento su WebHCat.

Passaggi successivi

Per informazioni generali su Pig in HDInsight:

Per informazioni su altre modalità d'uso di Hadoop in HDInsight: