Usare pacchetti esterni con notebook di Jupyter nei cluster Apache Spark in HDInsight

Informazioni su come configurare un notebook di Jupyter in un cluster Apache Spark in HDInsight per l'uso di pacchetti maven esterni creati dalla community e non inclusi per impostazione predefinita 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.

In questo articolo si apprenderà a usare il pacchetto spark-csv con Jupyter Notebook.

Prerequisiti

È necessario disporre di quanto segue:

Usare pacchetti esterni con i notebook Jupyter

  1. Dalla Schermata iniziale del portale di Azurefare clic sul riquadro del cluster Spark (se è stato aggiunto sulla Schermata iniziale). È anche possibile passare al cluster da Esplora tutto > Cluster HDInsight.
  2. Dal pannello del cluster Spark fare clic su Collegamenti rapidi e dal pannello Dashboard cluster fare clic su Notebook di Jupyter. Se richiesto, immettere le credenziali per il cluster.

    Nota

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

    https://CLUSTERNAME.azurehdinsight.net/jupyter

  3. Creare un nuovo notebook. Fare clic su New (Nuovo) e quindi su Spark.

    Creare un nuovo notebook Jupyter

  4. Un nuovo notebook verrà creato e aperto con il nome Untitled.pynb. Fare clic sul nome del notebook nella parte superiore e immettere un nome descrittivo.

    Specificare un nome per il notebook

  5. Si userà %%configure magic verrà usato per configurare il notebook per l'uso di un pacchetto esterno. Nei notebook che usano pacchetti esterni assicurarsi di richiamare %%configure magic nella prima cella del codice. Questo accorgimento garantisce che il kernel sia configurato per l'uso del pacchetto prima dell'avvio della sessione.

    Importante

    Se si dimentica di configurare il kernel nella prima cella, è possibile usare %%configure magic con il parametro -f. In questo modo, tuttavia, la sessione verrà riavviata e le operazioni eseguite andranno perse.

    Versione HDInsight Comando
    Per HDInsight 3.3 e HDInsight 3.4 %%configure
    { "packages":["com.databricks:spark-csv_2.10:1.4.0"] }
    Per HDInsight 3.5 e HDInsight 3.6 %%configure
    { "conf": {"spark.jars.packages": "com.databricks:spark-csv_2.10:1.4.0" }}
  6. Il frammento di codice riportato sopra attende le coordinate Maven per il pacchetto esterno nel repository centrale Maven. In questo frammento di codice com.databricks:spark-csv_2.10:1.4.0 è la coordinata Maven per il pacchetto spark-csv . Di seguito viene spiegato come creare le coordinate per un pacchetto.

    a. Individuare un pacchetto nel repository Maven. In questa esercitazione si userà spark-csv.

    b. Recuperare dal repository i valori per GroupId, ArtifactId e Version. Assicurarsi che i valori che si raccolgono corrispondano al cluster. Si usano, in questo caso, un pacchetto Scala 2.10 e un pacchetto Spark 1.4.0, ma potrebbe essere necessario selezionare versioni diverse per la versione di Scala o di Spark appropriata al cluster. È possibile trovare la versione di Scala nel cluster eseguendo scala.util.Properties.versionString nel kernel Jupyter Spark o nell'invio di Spark. È possibile trovare la versione di Spark nel cluster eseguendo sc.version nei notebook Jupyter.

    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
    
  7. Eseguire la cella di codice con %%configure magic. Questa operazione configura la sessione Livy sottostante per l'uso del pacchetto fornito. Nelle celle successive del notebook è ora possibile usare il pacchetto, come mostrato di seguito.

     val df = sqlContext.read.format("com.databricks.spark.csv").
     option("header", "true").
     option("inferSchema", "true").
     load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    

    Per HDInsight 3.6, usare il frammento di codice seguente.

     val df = spark.read.format("com.databricks.spark.csv").
     option("header", "true").
     option("inferSchema", "true").
     load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
  8. È quindi possibile eseguire i frammenti di codice, come mostrato di seguito, per visualizzare i dati del frame di dati creato nel passaggio precedente.

     df.show()
    
     df.select("Time").count()
    

Vedere anche

Scenari

Creare ed eseguire applicazioni

Strumenti ed estensioni

Gestire risorse