Esercitazione: Creare un'applicazione Apache Spark con IntelliJ usando un'area di lavoro di Synapse

Questa esercitazione illustra come usare il plug-in Azure Toolkit for IntelliJ per sviluppare applicazioni Apache Spark scritte in Scala e quindi inviarle a un pool di Apache Spark serverless direttamente dall'ambiente di sviluppo integrato (IDE) di IntelliJ. È possibile usare il plug-in in vari modi:

  • Sviluppare e inviare un'applicazione Spark in Scala in un pool di Spark.
  • Accedere alle risorse dei pool di Spark.
  • Sviluppare ed eseguire un'applicazione Spark in Scala localmente.

In questa esercitazione apprenderai a:

  • Usare Azure Toolkit for IntelliJ
  • Sviluppare applicazioni Apache Spark
  • Inviare l'applicazione ai pool di Spark

Prerequisiti

  • IntelliJ IDEA versione Community.

  • Plug-in Azure Toolkit versione 3.27.0-2019.2 - Eseguire l'installazione dal repository di plug-in IntelliJ

  • JDK (versione 1.8).

  • Plug-in Scala - Eseguire l'installazione dal repository di plug-in IntelliJ.

  • Il prerequisito seguente si applica solo agli utenti di Windows:

    Quando si esegue l'applicazione Spark Scala locale in un computer Windows, potrebbe essere restituita un'eccezione, come spiegato in SPARK-2356, che si verifica a causa di un file WinUtils.exe mancante in Windows. Per risolvere questo errore, scaricare il file eseguibile WinUtils in un percorso come C:\WinUtils\bin. È quindi necessario aggiungere una variabile di ambiente HADOOP_HOME e impostare il valore della variabile su C:\WinUtils.

Creare un'applicazione Spark in Scala per un pool di Spark

  1. Avviare IntelliJ IDEA e selezionare Crea nuovo progetto per aprire la finestra Nuovo progetto.

  2. Selezionare Apache Spark/HDInsight nel riquadro sinistro.

  3. Selezionare Spark Project with Samples(Scala) (Progetto Spark con esempi (Scala)) dalla finestra principale.

  4. Nell'elenco Strumento di compilazione selezionare uno dei tipi seguenti:

    • Maven, per ottenere supporto per la creazione guidata di un progetto Scala.
    • SBT, per la gestione delle dipendenze e la compilazione per il progetto Scala.

    IntelliJ IDEA New Project dialog box

  5. Seleziona Avanti.

  6. Nella finestra Nuovo progetto specificare le informazioni seguenti:

    Proprietà Descrizione
    Nome progetto Immetti un nome. In questa esercitazione viene usato myApp.
    Posizione del progetto Immettere il percorso desiderato in cui salvare il progetto.
    Project SDK (SDK progetto) Potrebbe essere vuoto al primo uso di IDEA. Selezionare New (Nuovo) e passare al proprio JDK.
    Versione Spark La creazione guidata integra la versione corretta dell'SDK di Spark e Scala. Qui è possibile scegliere la versione di Spark necessaria.

    Selecting the Apache Spark SDK

  7. Selezionare Fine. Potrebbero occorrere alcuni minuti prima che il progetto diventi disponibile.

  8. Il progetto Spark crea automaticamente un artefatto. Per visualizzare l'artefatto, eseguire questa operazione:

    a. Dalla barra dei menu passare a File>Struttura del progetto....

    b. Dalla finestra Struttura del progetto, selezionare Artefatti.

    c. Selezionare Annulla dopo aver visualizzato l'elemento.

    Artifact info in the dialog box

  9. Trovare LogQuery in myApp>src>main>scala>sample>LogQuery. Questa esercitazione usa LogQuery per l'esecuzione.

    Commands for creating a Scala class from Project

Connettersi ai pool di Spark

Accedere alla sottoscrizione di Azure per connettersi ai pool di Spark.

Accedere alla sottoscrizione di Azure.

  1. Dalla barra dei menu, passare a Visualizza>strumento Windows>Azure Explorer.

    IntelliJ IDEA shows Azure Explorer

  2. Da Azure Explorer, fare clic con il pulsante destro del mouse sul nodo Azure e quindi scegliere Sign In (Accedi).

    IntelliJ IDEA explorer right-click Azure

  3. Nella finestra di dialogo Azure Sign In (Accesso ad Azure) scegliere Accesso dispositivo e quindi selezionare Accedi.

    IntelliJ IDEA Azure sign-in

  4. Nella finestra di dialogo Accesso dispositivo selezionare Copia e apri.

    IntelliJ IDEA Azure device login

  5. Nell'interfaccia del browser incollare il codice e quindi selezionare Avanti.

    Microsoft enters code dialog for HDI

  6. Immettere le credenziali di Azure e quindi chiudere il browser.

    Microsoft enters e-mail dialog for HDI

  7. Dopo l'accesso, la finestra di dialogo Selezionare le sottoscrizioni elenca tutte le sottoscrizioni di Azure associate alle credenziali. Selezionare la sottoscrizione e quindi Seleziona.

    The Select Subscriptions dialog box

  8. In Azure Explorer espandere Apache Spark on Synapse (Apache Spark in Synapse) per visualizzare le aree di lavoro disponibili nelle sottoscrizioni.

    IntelliJ IDEA Azure Explorer main view

  9. Per visualizzare i pool di Spark, è possibile espandere ulteriormente un'area di lavoro.

    Azure Explorer storage accounts

Eseguire in modalità remota un'applicazione Spark in Scala in un pool di Spark

Dopo aver creato un'applicazione Scala, è possibile eseguirla in modalità remota.

  1. Aprire la finestra Run/Debug Configurations (Esecuzione/Debug configurazioni) selezionando l'icona.

    The Submit Spark Application to HDInsight command 1

  2. Nella finestra di dialogo Run/Debug Configurations (Esecuzione/Debug configurazioni) selezionare + e quindi Apache Spark on Synapse.

    The Submit Spark Application to HDInsight command 2

  3. Nella finestra Run/Debug Configurations (Esecuzione/Debug configurazioni) specificare i valori seguenti e quindi selezionare OK:

    Proprietà valore
    Pool di Spark Selezionare i pool di Spark in cui eseguire l'applicazione.
    Selezionare un artefatto da inviare Lasciare l'impostazione predefinita.
    Nome della classe principale Il valore predefinito corrisponde alla classe principale del file selezionato. È possibile modificare la classe selezionando i puntini di sospensione (...) e scegliendo una classe diversa.
    Configurazioni del processo È possibile modificare i valori e la chiave predefiniti. Per altre informazioni, vedere Apache Livy REST API (API REST di Apache Livy).
    Argomenti della riga di comando È possibile immettere gli argomenti divisi da uno spazio per la classe principale, se necessario.
    Referenced Jars (file JAR di riferimento) e Referenced Files (file di riferimento) È possibile immettere i percorsi per file e jar di riferimento, se presenti. È anche possibile selezionare i file nel file system virtuale di Azure, che attualmente supporta solo cluster di Azure Data Lake Storage Gen2. Per altre informazioni: Configurazione di Apache Spark e Come caricare risorse nel cluster.
    Archivio di caricamento del processo Espandere per visualizzare le opzioni aggiuntive.
    Tipo di archiviazione Nell'elenco a discesa selezionare Use Azure Blob to upload (Usa BLOB di Azure per caricare) o Use cluster default storage account to upload (Usa l'account di archiviazione predefinito del cluster per caricare).
    Account di archiviazione Immettere l'account di archiviazione.
    Chiave di archiviazione Immettere la chiave di archiviazione.
    Contenitore di archiviazione Selezionare il contenitore di archiviazione dall'elenco a discesa una volta immessi Account di archiviazione e chiave di archiviazione.

    The Spark Submission dialog box 1

  4. Selezionare l'icona SparkJobRun per inviare il progetto al pool di Spark selezionato. La scheda Remote Spark Job in Cluster (Processo Spark remoto nel cluster) visualizza lo stato dell'esecuzione del processo, nella parte inferiore. È possibile arrestare l'applicazione selezionando il rosso.

    Apache Spark Submission window

    The Spark Submission dialog box 2

Esecuzione/Debug locale di applicazioni Apache Spark

È possibile seguire le istruzioni riportate di seguito per configurare l'esecuzione locale e il debug locale per il processo di Apache Spark.

Scenario 1: Eseguire l'esecuzione locale

  1. Aprire la finestra di dialogo Run/Debug Configurations (Esecuzione/Debug configurazioni) e selezionare il segno più (+). Selezionare quindi l'opzione Apache Spark on Synapse (Apache Spark in Synapse). Per salvare, immettere le informazioni per Nome e Nome della classe principale.

    Intellij Run debug configurations local run 1

    • Le variabili di ambiente e il percorso di WinUtils.exe sono validi solo per gli utenti di Windows.
    • Variabili di ambiente: la variabile di ambiente di sistema può essere rilevata automaticamente se è stata impostata prima e non è necessario aggiungere manualmente.
    • Percorso WinUtils.exe: è possibile specificare il percorso winUtils selezionando l'icona della cartella a destra.
  2. Quindi selezionare il pulsante per la riproduzione locale.

    Intellij Run debug configurations local run 2

  3. Una volta completata l'esecuzione locale, se lo script include l'output, è possibile controllare il file di output da data>default (dati > predefinito).

    Intellij Project local run result 1

Scenario 2: Eseguire il debug locale

  1. Aprire lo script LogQuery e impostare i punti di interruzione.

  2. Selezionare l'icona Local debug (Debug locale) per eseguire il debug locale.

    Intellij Project local run result 2

Accedere e gestire l'area di lavoro Synapse

In Azure Explorer è possibile eseguire varie operazioni all'interno di Azure Toolkit for IntelliJ. Dalla barra dei menu, passare a Visualizza>strumento Windows>Azure Explorer.

Avviare l'area di lavoro

  1. Da Azure Explorer passare a Apache Spark on Synapse (Apache Spark in Synapse) ed espandere la voce.

    IntelliJ IDEA Azure Explorer main view

  2. Fare clic con il pulsante destro del mouse su un'area di lavoro, scegliere Launch workspace per aprire il sito Web.

    Spark Job View Application details 1

    Spark Job View Application details 2

Console Spark

È possibile eseguire la console locale Spark (Scala) o eseguire la console della sessione Spark Livy interattiva (Scala).

Console locale Spark (Scala)

Assicurarsi di aver soddisfatto il prerequisito relativo al file WINUTILS.EXE.

  1. Dalla barra dei menu passare a Run>Edit Configurations... (Esegui > Modifica configurazioni).

  2. Dalla finestra Run/Debug Configurations (Esecuzione/Debug configurazioni) nel riquadro a sinistra, passare a Apache Spark on Synapse>[Spark on Synapse] myApp (Apache Spark in Synapse > [Spark in Synapse] myApp).

  3. Nella finestra principale selezionare la scheda Locally Run (Esecuzione locale).

  4. Specificare i valori seguenti e quindi selezionare OK:

    Proprietà valore
    Variabili di ambiente Verificare che il valore di HADOOP_HOME sia corretto.
    WINUTILS.exe location (Percorso di WINUTILS.exe) Assicurarsi che il percorso sia corretto.

    Local Console Set Configuration

  5. Da Project (Progetto) passare a myApp>src>main>scala>myApp.

  6. Dalla barra dei menu passare a Tools>Spark Console>Run Spark Local Console(Scala) (Strumenti > Console Spark > Esegui console locale Spark - Scala).

  7. Potrebbero venire visualizzate due finestre di dialogo in cui viene chiesto se si vuole correggere automaticamente le dipendenze. In caso affermativo, selezionare Auto Fix (Correggi automaticamente).

    IntelliJ IDEA Spark Auto Fix dialog1

    IntelliJ IDEA Spark Auto Fix dialog2

  8. La console dovrebbe essere simile all'immagine seguente. Nella finestra della console digitare sc.appName e quindi premere CTRL+INVIO. Verrà visualizzato il risultato. È possibile arrestare la console locale selezionando il pulsante rosso.

    IntelliJ IDEA local console result

Console della sessione Spark Livy interattiva (Scala)

È supportata solo in IntelliJ 2018.2 e 2018.3.

  1. Dalla barra dei menu passare a Run>Edit Configurations... (Esegui > Modifica configurazioni).

  2. Dalla finestra Run/Debug Configurations (Esecuzione/Debug configurazioni) nel riquadro a sinistra, passare a Apache Spark on Synapse>[Spark on Synapse] myApp (Apache Spark in Synapse > [Spark in Synapse] myApp).

  3. Dalla finestra principale selezionare la scheda Remotely Run in Cluster (Esecuzione remota nel cluster).

  4. Specificare i valori seguenti e quindi selezionare OK:

    Proprietà valore
    Nome della classe principale Selezionare il nome della classe principale.
    Pool di Spark Selezionare i pool di Spark in cui eseguire l'applicazione.

    Interactive Console Set Configuration

  5. Da Project (Progetto) passare a myApp>src>main>scala>myApp.

  6. Dalla barra dei menu passare a Tools>Spark Console>Run Spark Livy Interactive Session Console(Scala) (Strumenti > Console Spark > Esegui console della sessione Spark Livy interattiva -Scala).

  7. La console dovrebbe essere simile all'immagine seguente. Nella finestra della console digitare sc.appName e quindi premere CTRL+INVIO. Verrà visualizzato il risultato. È possibile arrestare la console locale selezionando il pulsante rosso.

    IntelliJ IDEA Interactive Console Result

Inviare la selezione alla console Spark

È possibile scegliere di visualizzare il risultato dello script inviando codice alla console locale o alla console della sessione Livy interattiva (Scala). A tale scopo, è possibile evidenziare il codice nel file Scala e quindi fare clic con il pulsante destro del mouse su Send Selection To Spark Console (Invia selezione alla console Spark). Il codice selezionato verrà inviato alla console ed eseguito. Il risultato verrà visualizzato dopo il codice nella console. La console controllerà gli errori, se presenti.

Send Selection to Spark console

Passaggi successivi