Eseguire query Apache Hive usando gli strumenti Data Lake per Visual Studio

Informazioni su come usare gli strumenti Data Lake per Visual Studio per eseguire query su Apache Hive. Gli strumenti Data Lake consentono di creare, inviare e monitorare facilmente query Hive in Apache Hadoop in Azure HDInsight.

Prerequisiti

Eseguire query Apache Hive con Visual Studio

Per la creazione e l'esecuzione di query Hive sono disponibili due opzioni:

  • Creare query ad hoc.
  • Creare un'applicazione Hive.

Creare una query Hive ad hoc

Le query ad hoc possono essere eseguite in modalità Batch o Interattiva .

  1. Avviare Visual Studio e selezionare Continua senza codice.

  2. In Esplora server fare clic con il pulsante destro del mouse su Azure, selezionare Connessione alla sottoscrizione di Microsoft Azure e completare il processo di accesso.

  3. Espandere HDInsight, fare clic con il pulsante destro del mouse sul cluster in cui si vuole eseguire la query e quindi scegliere Scrivi una query Hive.

  4. Immettere la query hive seguente:

    SELECT * FROM hivesampletable;
    
  5. Seleziona Execute. Per impostazione predefinita, la modalità di esecuzione è Interattiva.

    Execute interactive Hive query, Visual Studio.

  6. Per eseguire la stessa query in modalità Batch , attivare o disattivare l'elenco a discesa da Interattivo a Batch. Il pulsante di esecuzione passa da Esegui a Invia.

    Submit batch Hive query, Visual Studio.

    L'editor Hive supporta IntelliSense. Strumenti Data Lake per Visual Studio supporta il caricamento di metadati remoti quando si modifica lo script Hive. Ad esempio, se si digita SELECT * FROM, IntelliSense elenca tutti i nomi di tabella suggeriti. Quando si specifica un nome di tabella, IntelliSense elenca i nomi delle colonne. Gli strumenti supportano la maggior parte delle funzioni definite dall'utente predefinite, delle sottoquery e delle istruzioni DML Hive. IntelliSense suggerisce solo i metadati del cluster selezionato nella barra degli strumenti HDInsight.

  7. Nella barra degli strumenti della query (l'area sotto la scheda della query e sopra il testo della query), selezionare Invia oppure selezionare la freccia a discesa accanto a Invia e scegliere Avanzate dall'elenco a discesa. Se si seleziona l'ultima opzione,

  8. Se è stata selezionata l'opzione di invio avanzata, configurare nome processo, argomenti, configurazioni aggiuntive e directory di stato nella finestra di dialogo Invia script. Selezionare quindi Invia.

    Submit Script dialog box, HDInsight Hadoop Hive query.

Creare un'applicazione Hive

Per eseguire una query Hive creando un'applicazione Hive, seguire questa procedura:

  1. Aprire Visual Studio.

  2. Nella finestra iniziale selezionare Crea un nuovo progetto.

  3. Nella finestra Crea un nuovo progetto immettere Hive nella casella Cerca modelli. Scegliere quindi Applicazione Hive e selezionare Avanti.

  4. Nella finestra Configura il nuovo progetto immettere un nome di progetto, selezionare o creare un percorso per il nuovo progetto e quindi selezionare Crea.

  5. Aprire il file Script.hql creato con il progetto e incollarvi le seguenti istruzioni HiveQL:

    set hive.execution.engine=tez;
    DROP TABLE log4jLogs;
    CREATE EXTERNAL TABLE log4jLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
    STORED AS TEXTFILE LOCATION '/example/data/';
    SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND  INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
    

    Queste istruzioni eseguono le azioni seguenti:

    • DROP TABLE: elimina la tabella se esistente.

    • CREATE EXTERNAL TABLE: crea una nuova tabella "esterna" in Hive. Le tabelle esterne archiviano solo la definizione della tabella in Hive. I dati sono rimasti nella posizione originale.

      Nota

      Le tabelle esterne devono essere usate quando si prevede che i dati sottostanti vengano aggiornati da un'origine esterna, ad esempio un processo MapReduce o un servizio di Azure.

      L'eliminazione di una tabella esterna non comporta anche l'eliminazione dei dati. Viene eliminata solo la definizione della tabella.

    • ROW FORMAT: indica a Hive il modo in cui sono formattati i dati. In questo caso, i campi in ogni log sono separati da uno spazio.

    • STORED AS TEXTFILE LOCATION: indica a Hive che i dati vengono archiviati nella directory example/data e che vengono archiviati come testo.

    • SELECT: seleziona un conteggio di tutte le righe in cui la colonna t4 contiene il valore [ERROR]. Questa istruzione restituisce un valore di 3, perché tre righe contengono questo valore.

    • INPUT__FILE__NAME LIKE '%.log': indica a Hive di restituire solo i dati dai file che terminano .log. Questa clausola limita la ricerca al file di sample.log che contiene i dati.

  6. Dalla barra degli strumenti del file di query (con un aspetto simile alla barra degli strumenti delle query ad hoc), selezionare il cluster HDInsight che si vuole usare per questa query. Modificare quindi Interactive in Batch (se necessario) e selezionare Invia per eseguire le istruzioni come processo Hive.

    Verrà visualizzata una finestra di riepilogo del processo Hive con informazioni relative al processo in esecuzione. Usare il collegamento Aggiorna per aggiornare le informazioni del processo finché il campo Stato processo non viene impostato su Completato.

    Completed Hive job summary, Hive application, Visual Studio.

  7. Selezionare Output processo per visualizzare l'output di questo processo. Mostra [ERROR] 3, ovvero il valore restituito dalla query.

Esempio aggiuntivo

L'esempio log4jLogs seguente si basa sulla tabella creata nella procedura precedente, Creare un'applicazione Hive.

  1. In Esplora server fare clic con il pulsante destro del mouse sul cluster e scegliere Scrivi una query Hive.

  2. Immettere la query hive seguente:

    set hive.execution.engine=tez;
    CREATE TABLE IF NOT EXISTS errorLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) STORED AS ORC;
    INSERT OVERWRITE TABLE errorLogs SELECT t1, t2, t3, t4, t5, t6, t7 FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log';
    

    Queste istruzioni eseguono le azioni seguenti:

    • CREATE TABLE IF NOT EXISTS: crea una tabella se non esiste già. Poiché la EXTERNAL parola chiave non viene usata, questa istruzione crea una tabella interna. Le tabelle interne vengono archiviate nel data warehouse di Hive e sono gestite da Hive.

      Nota

      A differenza delle tabelle EXTERNAL, se si elimina una tabella interna, vengono eliminati anche i dati sottostanti.

    • STORED AS ORC: archivia i dati in formato ORC (Optimized Row Columnar ). ORC è un formato altamente ottimizzato ed efficiente per l'archiviazione di dati Hive.

    • INSERT OVERWRITE ... SELECT: seleziona le righe della tabella log4jLogs contenenti [ERROR], quindi inserisce i dati nella tabella errorLogs.

  3. Modificare Interactive in Batch , se necessario, quindi selezionare Invia.

  4. Per verificare che il processo abbia creato la tabella, passare a Esplora server ed espandere Azure>HDInsight. Espandere il cluster HDInsight e quindi espandere Database>Hive predefinito. Vengono elencate la tabella errorLogs e la tabella log4jLogs.

Passaggi successivi

Come si può notare, gli strumenti HDInsight per Visual Studio forniscono un modo semplice per lavorare con le query Hive in HDInsight.