Utiliser des packages externes avec des blocs-notes Jupyter Notebook dans des clusters Apache Spark sur HDInsight

Découvrez comment configurer un bloc-notes Jupyter Notebook dans un cluster Apache Spark sur HDInsight pour utiliser des packages Apache Maven externes bénéficiant de la contribution de la communauté, qui ne sont pas inclus dans le cluster.

Vous pouvez rechercher le référentiel Maven pour obtenir la liste complète des packages disponibles. Vous pouvez également obtenir une liste des packages disponibles à partir d’autres sources. Par exemple, une liste complète des packages bénéficiant de la contribution de la communauté est disponible sur le site Spark Packages(Packages Spark).

Dans cet article, vous allez apprendre à utiliser le package spark-csv avec le bloc-notes Jupyter Notebook.

Prérequis

Utiliser des packages externes avec des blocs-notes Jupyter

  1. Accédez à https://CLUSTERNAME.azurehdinsight.net/jupyter, où CLUSTERNAME est le nom de votre cluster Spark.

  2. Créer un nouveau bloc-notes. Sélectionnez Nouveau, puis sélectionnez Spark.

    Create a new Spark Jupyter Notebook.

  3. Un nouveau bloc-notes est créé et ouvert sous le nom Untitled.pynb. Sélectionnez le nom du bloc-notes en haut, puis entrez un nom convivial.

    Provide a name for the notebook.

  4. Vous allez utiliser la commande magique %%configure pour configurer le bloc-notes afin d’utiliser un package externe. Dans les blocs-notes utilisant des packages externes, veillez à appeler la commande magique %%configure dans la première cellule de code. Cela garantit que le noyau est configuré pour utiliser le package avant le démarrage de la session.

    Important

    Si vous oubliez de configurer le noyau dans la première cellule, vous pouvez utiliser %%configure avec le paramètre -f. Toutefois, cette opération redémarrera la session et entraînera la perte de toute la progression.

    Version de HDInsight Commande
    Pour HDInsight 3.5 et HDInsight 3.6 %%configure
    { "conf": {"spark.jars.packages": "com.databricks:spark-csv_2.11:1.5.0" }}
    Pour HDInsight 3.3 et HDInsight 3.4 %%configure
    { "packages":["com.databricks:spark-csv_2.10:1.4.0"] }
  5. L’extrait de code ci-dessus attend une liste de coordonnées maven pour le package externe du référentiel central Maven. Dans cet extrait de code, com.databricks:spark-csv_2.11:1.5.0 est la coordonnée maven pour le package spark-csv . Voici comment vous construire les coordonnées d’un package.

    a. Recherchez le package dans le référentiel Maven. Dans cet article, nous utilisons spark-csv.

    b. À partir du référentiel, rassemblez les valeurs pour GroupId, ArtifactId et Version. Vérifiez que les valeurs que vous collectez correspondent à votre cluster. Dans ce cas, nous utilisons un package Scala 2.11 et Spark 1.5.0, mais il peut être nécessaire de sélectionner des versions différentes pour la version appropriée de Scala ou de Spark dans votre cluster. Vous pouvez trouver la version de Scala sur votre cluster en exécutant scala.util.Properties.versionString sur le noyau Spark Jupyter ou sur spark-submit. Vous pouvez trouver la version de Spark sur votre cluster en exécutant sc.version sur les blocs-notes Jupyter Notebook.

    Use external packages with Jupyter Notebook.

    c. Concaténez les trois valeurs séparées par deux-points ( : ).

    com.databricks:spark-csv_2.11:1.5.0
    
  6. Exécutez la cellule de code avec la commande magique %%configure . Cela configurera la session Livy sous-jacente pour utiliser le package fourni. Dans les cellules suivantes du bloc-notes, vous pouvez maintenant utiliser le package, comme indiqué ci-dessous.

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

    Pour HDInsight 3.4 et versions antérieures, utilisez l’extrait de code suivant.

    val df = sqlContext.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
  7. Vous pouvez ensuite exécuter les extraits de code, comme illustré ci-dessous, pour afficher les données issues du tableau de données créé lors de l’étape précédente.

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

Voir aussi

Scénarios

Création et exécution d’applications

Outils et extensions

Gestion des ressources