Usare i notebook di Zeppelin con cluster Apache Spark in Azure HDInsight

I cluster HDInsight Spark includono notebook Zeppelin che possono essere usati per eseguire processi Spark. Questo articolo illustra come usare il notebook Zeppelin in un cluster HDInsight.

Nota

I notebook Zeppelin sono disponibili solo per Spark 1.6.3 in HDInsight 3.5 e Spark 2.1.0 in HDInsight 3.6.

Prerequisiti:

Avviare un notebook Zeppelin

  1. Nel pannello del cluster Spark fare clic su Dashboard cluster e quindi su Notebook di Zeppelin. Se richiesto, immettere le credenziali per il cluster.

    Nota

    È anche possibile raggiungere il notebook di Zeppelin per il cluster aprendo l'URL seguente nel browser. Sostituire CLUSTERNAME con il nome del cluster:

    https://CLUSTERNAME.azurehdinsight.net/zeppelin

  2. Creare un nuovo notebook. Dal riquadro intestazione fare clic su Notebook e quindi su Create New Note (Crea una nuova nota).

    Creare un nuovo notebook Zeppelin

    Immettere un nome per il notebook e quindi fare clic su Create New Note (Crea una nuova nota).

  3. Verificare anche che l'intestazione del notebook mostri uno stato connesso, indicato da un punto verde nell'angolo superiore destro.

    Stato del notebook Zeppelin

  4. Caricare i dati di esempio in una tabella temporanea. Quando si crea un cluster Spark in HDInsight, il file di dati di esempio, hvac.csv, viene copiato nell'account di archiviazione associato in \HdiSamples\SensorSampleData\hvac.

    Nel paragrafo vuoto creato per impostazione predefinita del nuovo notebook, incollare il frammento di codice riportato di seguito.

     %livy.spark
     //The above magic instructs Zeppelin to use the Livy Scala interpreter
    
     // Create an RDD using the default Spark context, sc
     val hvacText = sc.textFile("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
     // Define a schema
     case class Hvac(date: String, time: String, targettemp: Integer, actualtemp: Integer, buildingID: String)
    
     // Map the values in the .csv file to the schema
     val hvac = hvacText.map(s => s.split(",")).filter(s => s(0) != "Date").map(
         s => Hvac(s(0), 
                 s(1),
                 s(2).toInt,
                 s(3).toInt,
                 s(6)
         )
     ).toDF()
    
     // Register as a temporary table called "hvac"
     hvac.registerTempTable("hvac")
    

    Premere MAIUSC+INVIO oppure fare clic sul pulsante Play (Riproduci) in modo che il paragrafo esegua il frammento di codice. Lo stato nell'angolo destro del paragrafo deve passare da PRONTO, IN ATTESA, IN ESECUZIONE, a COMPLETATO. L'output viene visualizzato nella parte inferiore dello stesso paragrafo. Nella schermata è simile al seguente:

    Creare una tabella temporanea dai dati non elaborati

    È inoltre possibile fornire un titolo a ogni paragrafo. Nell'angolo superiore destro fare clic sull'icona Settings (Impostazioni) e quindi su Show title (Mostra titolo).

  5. È ora possibile eseguire istruzioni SQL Spark su tabella hvac . Incollare la query seguente in un nuovo paragrafo. La query recupera l'ID dell'edificio e la differenza tra le temperature effettive e quelle di destinazione per ogni edificio in una determinata data. Premere MAIUSC + INVIO.

     %sql
     select buildingID, (targettemp - actualtemp) as temp_diff, date from hvac where date = "6/1/13" 
    

    L'istruzione %sql all'inizio indica al notebook di usare l'interprete Livy Scala.

    Nella schermata riportata di seguito sono illustrate questo output.

    Eseguire un'istruzione SQL Spark usando il notebook

    Scegliere le opzioni di visualizzazione (evidenziate nel rettangolo) per passare tra diverse rappresentazioni per lo stesso output. Fare clic su Impostazioni per scegliere la chiave e i valori nell'output. La schermata precedente usa buildingID come chiave e la media di temp_diff come valore.

  6. È inoltre possibile eseguire istruzioni SQL Spark tramite le variabili nella query. Il seguente frammento di codice illustra come definire una variabile Tempnella query con i valori possibili che si vuole eseguire. Quando si esegue la query per la prima volta, un elenco a tendina viene popolato automaticamente con i valori specificati per la variabile.

     %sql
     select buildingID, date, targettemp, (targettemp - actualtemp) as temp_diff from hvac where targettemp > "${Temp = 65,65|75|85}" 
    

    Incollare questo frammento di codice in un nuovo paragrafo e premere MAIUSC+INVIO. Nella schermata riportata di seguito sono illustrate questo output.

    Eseguire un'istruzione SQL Spark usando il notebook

    Per le query successive, è possibile selezionare un nuovo valore dall'elenco a tendina e quindi eseguire nuovamente la query. Fare clic su Impostazioni per scegliere la chiave e i valori nell'output. La schermata precedente usa buildingID come chiave, la media di temp_diff come valore e targettemp come gruppo.

  7. Riavviare l'interprete Livy per uscire dall'applicazione. A tale scopo, aprire le impostazioni dell'interprete facendo clic sul nome dell'utente connesso nell'angolo superiore destro e quindi fare clic su Interpreter (Interprete).

    Avviare l'interprete

  8. Scorrere fino alle impostazioni dell'interprete e quindi fare clic su Restart (Riavvia).

    Riavviare l'interprete Livy

Come usare pacchetti esterni con il notebook

È possibile configurare il notebook Zeppelin in un cluster Apache Spark in HDInsight (Linux) per l'uso di pacchetti esterni creati dalla community che non sono inclusi come predefiniti nel cluster. Per un elenco completo dei pacchetti disponibili, è possibile eseguire ricerche nel repository Maven . È anche possibile ottenere un elenco dei pacchetti disponibili da altre origini. Ad esempio, un elenco completo dei pacchetti creati dalla community è disponibile nel sito Web spark-packages.org.

Questo articolo illustra come usare il pacchetto spark-csv con il notebook Jupyter.

  1. Aprire le impostazioni dell'interprete. Nell'angolo superiore destro fare clic sul nome dell'utente connesso e quindi su Interpreter (Interprete).

    Avviare l'interprete

  2. Scorrere fino alle impostazioni dell'interprete e quindi fare clic su Edit (Modifica).

    Modificare le impostazioni dell'interprete

  3. Aggiungere una nuova chiave denominata livy.spark.jars.packages e impostarne il valore nel formato group:id:version. Se si vuole usare il pacchetto spark-csv, è quindi necessario impostare il valore della chiave su com.databricks:spark-csv_2.10:1.4.0.

    Modificare le impostazioni dell'interprete

    Fare clic su Save (Salva) e quindi riavviare l'interprete Livy.

  4. Suggerimento: il valore della chiave immesso sopra si determina come illustrato di seguito.

    a. Individuare un pacchetto nel repository Maven. In questa esercitazione è stato usato spark-csv.

    b. Recuperare dal repository i valori per GroupId, ArtifactId e Version.

    Usare pacchetti esterni con notebook di Jupyter

    c. Concatenare i tre valori, separati da due punti (:).

     com.databricks:spark-csv_2.10:1.4.0
    

Posizione di salvataggio dei notebook Zeppelin

I notebook Zeppelin vengono salvati nei nodi head del cluster. Se si elimina il cluster, verranno quindi eliminati anche i notebook. Se si vogliono mantenere i notebook per usarli successivamente in altri cluster, è necessario esportarli al termine dell'esecuzione dei processi. Per esportare un notebook, fare clic sull'icona di esportazione come illustrato nell'immagine seguente.

Scaricare notebook

Il notebook verrà così salvato come file JSON nel percorso di download dell'utente.

Gestione delle sessioni di Livy

Quando si esegue il primo paragrafo di codice nel notebook Zeppelin, nel cluster HDInsight Spark viene creata una nuova sessione di Livy. Tale sessione sarà condivisa da tutti i notebook Zeppelin creati successivamente. Se la sessione di Livy viene terminata per qualche motivo (riavvio del cluster e così via), non sarà possibile eseguire processi dal notebook Zeppelin.

In tal caso, per poter eseguire processi dal notebook Zeppelin è prima necessario seguire questa procedura.

  1. Riavviare l'interprete Livy dal notebook Zeppelin. A tale scopo, aprire le impostazioni dell'interprete facendo clic sul nome dell'utente connesso nell'angolo superiore destro e quindi fare clic su Interpreter (Interprete).

    Avviare l'interprete

  2. Scorrere fino alle impostazioni dell'interprete e quindi fare clic su Restart (Riavvia).

    Riavviare l'interprete Livy

  3. Eseguire una cella di codice da un notebook Zeppelin esistente. Verrà così creata una nuova sessione di Livy nel cluster HDInsight.

Vedere anche

Scenari

Creare ed eseguire applicazioni

Strumenti ed estensioni

Gestire risorse