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

Informazioni su come configurare un oggetto Jupyter Notebook 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

Usare pacchetti esterni con Jupyter Notebook

  1. Passare a https://CLUSTERNAME.azurehdinsight.net/jupyter dove CLUSTERNAME è il nome del cluster di Spark.

  2. Creare un nuovo notebook. Selezionare Nuovo seguito da Spark.

    Creare un nuovo notebook di Jupyter Spark.

  3. Un nuovo notebook verrà creato e aperto con il nome Untitled.pynb. Selezionare il nome del notebook nella parte superiore e immettere un nome descrittivo.

    Specificare un nome per il notebook.

  4. 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.5 e HDInsight 3.6 %%configure
    { "conf": {"spark.jars.packages": "com.databricks:spark-csv_2.11:1.5.0" }}
    Per HDInsight 3.3 e HDInsight 3.4 %%configure
    { "packages":["com.databricks:spark-csv_2.10:1.4.0"] }
  5. 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.11:1.5.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. Per questo articolo viene usato 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.11 e un pacchetto Spark 1.5.0, ma potrebbe essere necessario selezionare versioni differenti 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 Jupyter Notebook.

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

    com.databricks:spark-csv_2.11:1.5.0
    
  6. 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 = spark.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    

    Per HDInsight 3.4 e versioni precedenti, usare il frammento di codice seguente.

    val df = sqlContext.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
  7. È 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()
    

Vedi anche

Scenari

Creare ed eseguire applicazioni

Strumenti ed estensioni

Gestione risorse