Tutoriel : Créer une application Apache Spark avec IntelliJ en utilisant un espace de travail Synapse

Ce tutoriel vous montre comment utiliser le plug-in Azure Toolkit for IntelliJ pour développer des applications Apache Spark, qui sont écrites en Scala, puis les envoyer directement à un pool Apache Spark serverless à partir de l’environnement de développement intégré (IDE) IntelliJ. Vous pouvez utiliser le plug-in de différentes manières :

  • Développer et soumettre une application Scala Spark sur un pool Spark.
  • Accéder aux ressources de vos pools Spark.
  • Développer et exécuter une application Scala Spark localement.

Dans ce tutoriel, vous allez apprendre à :

  • Utiliser le plug-in Azure Toolkit for IntelliJ
  • Développer des applications Apache Spark
  • Envoyer l’application aux pools Spark

Prérequis

Créer une application Spark Scala pour un pool Spark

  1. Démarrez IntelliJ IDEA, puis sélectionnez Create New Project (Créer un projet) pour ouvrir la fenêtre New Project (Nouveau projet).

  2. Sélectionnez Apache Spark/HDInsight dans le volet gauche.

  3. Sélectionnez Spark Project avec exemples (Scala) [Projet Spark (Scala)] dans la fenêtre principale.

  4. Dans la liste déroulante Build tool (Outil de build), sélectionnez l’un des types suivants :

    • Maven pour la prise en charge de l’Assistant de création de projets Scala.
    • SBT pour gérer les dépendances et la génération du projet Scala.

    IntelliJ IDEA New Project dialog box

  5. Cliquez sur Suivant.

  6. Dans la fenêtre New Project (Nouveau projet), entrez les informations suivantes :

    Propriété Description
    Nom du projet Entrez un nom. Ce didacticiel utilise myApp.
    Emplacement du projet Entrez l’emplacement où vous souhaitez enregistrer votre projet.
    Project SDK (SDK du projet) Ce champ peut être vide si vous utilisez IDEA pour la première fois. Sélectionnez New... (Nouveau) et accédez à votre JDK.
    Version de Spark L’Assistant de création intègre la version correcte des SDK Spark et Scala. Ici, vous pouvez choisir la version Spark dont vous avez besoin.

    Selecting the Apache Spark SDK

  7. Sélectionnez Terminer. Vous devrez peut-être patienter quelques minutes avant que le projet soit disponible.

  8. Le projet Spark crée automatiquement un artefact. Pour afficher l’artefact, effectuez les opérations suivantes :

    a. À partir de la barre de menus, accédez à File>Project Structure.

    b. Dans la fenêtre Project Structure, sélectionnez Artifacts.

    c. Sélectionnez Cancel (Annuler) après avoir visualisé l’artefact.

    Artifact info in the dialog box

  9. Recherchez LogQuery à partir de myApp>src>main>scala>sample>LogQuery. Ce tutoriel utilise LogQuery pour s’exécuter.

    Commands for creating a Scala class from Project

Vous connecter à vos pools Spark

Connectez-vous à l’abonnement Azure pour vous connecter à vos pools Spark.

Connectez-vous à votre abonnement Azure :

  1. Dans la barre de menus, accédez à Affichage>Fenêtres Outil>Azure Explorer.

    IntelliJ IDEA shows Azure Explorer

  2. Dans Azure Explorer, cliquez avec le bouton droit sur le nœud Azure, puis sélectionnez Se connecter.

    IntelliJ IDEA explorer right-click Azure

  3. Dans la boîte de dialogue Connexion à Azure, choisissez Connexion à l’appareil, puis sélectionnez Connexion.

    IntelliJ IDEA Azure sign-in

  4. Dans la boîte de dialogue Connexion à l’appareil Azure, sélectionnez Copier et ouvrir.

    IntelliJ IDEA Azure device login

  5. Dans l’interface du navigateur, collez le code, puis sélectionnez Suivant.

    Microsoft enters code dialog for HDI

  6. Entrez vos informations d’identification Azure, puis fermez le navigateur.

    Microsoft enters e-mail dialog for HDI

  7. Une fois que vous êtes connecté, la boîte de dialogue Sélectionner des abonnements répertorie tous les abonnements Azure associés aux informations d’identification. Sélectionnez votre abonnement, puis choisissez Sélectionner.

    The Select Subscriptions dialog box

  8. Dans Azure Explorer, développez Apache Spark on Synapse pour voir les espaces de travail de vos abonnements.

    IntelliJ IDEA Azure Explorer main view

  9. Pour voir les pools Spark, vous pouvez développer un espace de travail.

    Azure Explorer storage accounts

Exécuter à distance une application Spark Scala sur un pool Spark

Après avoir créé une application Scala, vous pouvez l’exécuter à distance.

  1. Ouvrez la fenêtre Run/Debug Configurations (Exécuter/déboguer les configurations) en sélectionnant l’icône.

    The Submit Spark Application to HDInsight command 1

  2. Dans la boîte de dialogue Run/Debug Configurations (Exécuter/déboguer les configurations), sélectionnez + , puis sélectionnez Apache Spark on Synapse.

    The Submit Spark Application to HDInsight command 2

  3. Dans la fenêtre Run/Debug Configurations (Exécuter/déboguer les configurations), entrez les valeurs suivantes, puis sélectionnez OK :

    Propriété Valeur
    Spark pools Sélectionnez les pools Spark sur lesquels vous souhaitez exécuter votre application.
    Sélectionner un artefact à envoyer Conservez le paramètre par défaut.
    Main class name La valeur par défaut est la classe principale du fichier sélectionné. Vous pouvez changer la classe en sélectionnant les points de suspension ( ... ), puis en choisissant une autre classe.
    Configurations du travail Vous pouvez changer la clé et les valeurs par défaut. Pour plus d’informations, consultez API REST Apache Livy.
    Arguments de ligne de commande Vous pouvez entrer des arguments séparés par un espace pour la classe main, si nécessaire.
    JAR référencés et fichiers référencés vous pouvez entrer les chemins des fichiers jar et des fichiers référencés, si vous en avez. Vous pouvez également parcourir les fichiers dans le système de fichiers virtuel Azure, qui ne prend en charge que le cluster ADLS Gen2. Pour plus d'informations : Configuration Apache Spark et Guide pratique pour charger des ressources sur un cluster.
    Stockage des chargements de travaux Développez pour afficher des options supplémentaires.
    Type de stockage Sélectionnez Utiliser l’objet blob Azure pour charger ou Utiliser le compte de stockage par défaut du cluster pour charger à partir de la liste déroulante.
    Compte de stockage Entrez votre compte de stockage.
    Clé de stockage Entrez votre clé de stockage.
    Conteneur de stockage Sélectionnez votre conteneur de stockage dans la liste déroulante après avoir entré les valeurs Compte de stockage et Clé de stockage.

    The Spark Submission dialog box 1

  4. Sélectionnez l’icône SparkJobRun pour envoyer votre projet au pool Spark sélectionné. L’onglet Remote Spark Job in Cluster (Travail Spark distant dans le cluster) affiche la progression de l’exécution du travail au bas de la page. Vous pouvez arrêter l’application en sélectionnant le bouton rouge.

    Apache Spark Submission window

    The Spark Submission dialog box 2

Exécuter et déboguer les applications Apache Spark localement

Vous pouvez suivre les instructions ci-dessous pour configurer l’exécution et le débogage locaux de votre travail Apache Spark.

Scénario 1 : Effectuer une exécution locale

  1. Ouvrez la boîte de dialogue Exécuter/Déboguer les configurations, puis sélectionnez le signe plus (+). Sélectionnez ensuite l’option Apache Spark on Synapse. Entrez les informations sur le nom (Name) et le nom principal de la classe (Main class name) à enregistrer.

    Intellij Run debug configurations local run 1

    • Les variables d’environnement et l’emplacement de WinUtils.exe ne concernent que les utilisateurs Windows.
    • Variables d’environnement : la variable d’environnement système peut être détectée automatiquement si vous l’avez définie avant et que vous n’avez pas besoin de l’ajouter manuellement.
    • Emplacement de WinUtils.exe : Vous pouvez spécifier l’emplacement de WinUtils en sélectionnant l’icône de dossier à droite.
  2. Sélectionnez ensuite le bouton de lecture locale.

    Intellij Run debug configurations local run 2

  3. Une fois l’exécution locale terminée, si le script contient une sortie, vous pouvez vérifier le fichier de sortie à partir de data>default.

    Intellij Project local run result 1

Scénario 2 : Effectuer un débogage local

  1. Ouvrez le script LogQuery, puis définissez des points d’arrêt.

  2. Sélectionnez l’icône Local debug (Débogage local) pour effectuer le débogage local.

    Intellij Project local run result 2

Accéder à l’espace de travail Synapse et le gérer

Vous pouvez effectuer différentes opérations dans Azure Explorer au sein d’Azure Toolkit for IntelliJ. Dans la barre de menus, accédez à Affichage>Fenêtres Outil>Azure Explorer.

Lancer l’espace de travail

  1. Dans Azure Explorer, accédez à Apache Spark on Synapse, puis développez-le.

    IntelliJ IDEA Azure Explorer main view

  2. Cliquez avec le bouton droit sur un espace de travail, puis sélectionnez Launch workspace (Lancer l’espace de travail) ; le site web s’ouvre.

    Spark Job View Application details 1

    Spark Job View Application details 2

Console Spark

Vous pouvez exécuter la console locale Spark (Scala) ou exécuter la console de sessions interactives Spark Livy (Scala).

Console locale Spark (Scala)

Veillez à respecter les prérequis WINUTILS.EXE.

  1. Dans la barre de menus, accédez à Run>Edit Configurations... .

  2. Dans la fenêtre Run/Debug Configurations (Exécuter/déboguer des configurations), dans le volet gauche, accédez à Apache Spark on Synapse>[Spark on Synapse] myApp.

  3. Dans la fenêtre principale, sélectionnez l’onglet Locally Run.

  4. Entrez les valeurs suivantes, puis sélectionnez OK :

    Propriété Valeur
    Variables d'environnement Vérifiez que la valeur de HADOOP_HOME est correcte.
    WINUTILS.exe location Vérifiez que le chemin est correct.

    Local Console Set Configuration

  5. Dans le projet, accédez à myApp>src>main>scala>myApp.

  6. Dans la barre de menus, accédez à Tools>Spark console>Run Spark Local Console(Scala) .

  7. Deux boîtes de dialogue peuvent s’afficher pour vous demander si vous souhaitez corriger automatiquement les dépendances. Si c’est le cas, sélectionnez Correction automatique.

    IntelliJ IDEA Spark Auto Fix dialog1

    IntelliJ IDEA Spark Auto Fix dialog2

  8. La console doit ressembler à l’image ci-dessous. Dans la fenêtre de la console, tapez sc.appName, puis appuyez sur Ctrl + Entrée. Le résultat s’affiche. Vous pouvez arrêter l’exécution de la console locale en sélectionnant le bouton rouge.

    IntelliJ IDEA local console result

Console de sessions interactives Spark Livy (Scala)

Elle est uniquement prise en charge sur IntelliJ 2018.2 et 2018.3.

  1. Dans la barre de menus, accédez à Run>Edit Configurations... .

  2. Dans la fenêtre Run/Debug Configurations (Exécuter/déboguer des configurations), dans le volet gauche, accédez à Apache Spark on Synapse>[Spark on Synapse] myApp.

  3. Dans la fenêtre principale, sélectionnez l’onglet Remotely Run in Cluster.

  4. Entrez les valeurs suivantes, puis sélectionnez OK :

    Propriété Valeur
    Main class name Sélectionnez le nom de la classe Main.
    Spark pools Sélectionnez les pools Spark sur lesquels vous souhaitez exécuter votre application.

    Interactive Console Set Configuration

  5. Dans le projet, accédez à myApp>src>main>scala>myApp.

  6. Dans la barre de menus, accédez à Tools>Spark console>Run Spark Livy Interactive Session Console(Scala) .

  7. La console doit ressembler à l’image ci-dessous. Dans la fenêtre de la console, tapez sc.appName, puis appuyez sur Ctrl + Entrée. Le résultat s’affiche. Vous pouvez arrêter l’exécution de la console locale en sélectionnant le bouton rouge.

    IntelliJ IDEA Interactive Console Result

Envoyer la sélection vers la console Spark

Vous pouvez voir le résultat du script en envoyant du code vers la console locale ou la console de sessions interactives Livy (Scala). Pour cela, vous pouvez mettre en surbrillance du code dans le fichier Scala, puis cliquer avec le bouton droit sur Send Selection To Spark Console (Envoyer la sélection vers la console Spark). Le code sélectionné est envoyé vers la console pour être exécuté. Le résultat s’affiche après le code dans la console. La console va vérifie les éventuelles erreurs.

Send Selection to Spark console

Étapes suivantes