Usare gli strumenti HDInsight per IntelliJ con Hortonworks Sandbox

Informazioni su come usare gli strumenti HDInsight per IntelliJ per sviluppare applicazioni Apache Scala e quindi testare le applicazioni su Hortonworks Sandbox in esecuzione nel computer.

IntelliJ IDEA è un ambiente di sviluppo integrato (IDE) Java per lo sviluppo di software per computer. Dopo aver sviluppato e testato le applicazioni su Hortonworks Sandbox, è possibile trasferirle in Azure HDInsight.

Prerequisiti

Prima di iniziare questa esercitazione sono necessari gli elementi seguenti:

Per installare i plug-in:

  1. Aprire IntelliJ IDEA.
  2. Nella pagina iniziale selezionare Configure (Configura) e quindi Plugins (Plug-in).
  3. Nell'angolo inferiore sinistro selezionare Install JetBrains plugin (Installa plug-in JetBrains).
  4. Usare la funzione di ricerca per cercare Scala e quindi selezionare Install (Installa).
  5. Per completare l'installazione, selezionare Restart IntelliJ IDEA (Riavvia IntelliJ IDEA).
  6. Ripetere i passaggi 4 e 5 per installare Azure Toolkit for IntelliJ. Per altre informazioni, vedere Installare Azure Toolkit for IntelliJ.

Creare un'applicazione Spark Scala

In questa sezione verrà creato un progetto Scala di esempio usando IntelliJ IDEA. Nella sezione successiva, IntelliJ IDEA verrà collegato a Hortonworks Sandbox (emulatore) prima di inviare il progetto.

  1. Aprire IntelliJ IDEA nel computer in uso. Nella finestra di dialogo New Project (Nuovo progetto) completare questi passaggi:

    1. Selezionare HDInsight > Spark on HDInsight (Scala) (Spark in HDInsight - Scala).
    2. Nell'elenco Build tool (Strumento di compilazione) selezionare uno degli strumenti seguenti, a seconda dello scenario:

      • 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.

    Finestra di dialogo del nuovo progetto

  2. Selezionare Avanti.

  3. Nella finestra di dialogo New Project(Nuovo progetto) successiva completare questi passaggi:

    1. Nella casella Project name (Nome progetto) immettere un nome per il progetto.
    2. Nella casella Project location (Percorso progetto) immettere un percorso per il progetto.
    3. Accanto all'elenco a discesa Project SDK (SDK progetto) selezionare New (Nuovo), JDK e quindi specificare la cartella per Java JDK 1.7 o versione successiva. Selezionare Java 1.8 per il cluster Spark 2.x. Selezionare Java 1.7 per il cluster Spark 1.x. Il percorso predefinito è C:\Programmi\Java\jdk1.8.x_xxx.
    4. Nell'elenco a discesa Spark version (Versione di Spark) la creazione guidata del progetto Scala inserisce la versione corretta per Spark SDK e Scala SDK. Se la versione del cluster Spark è precedente alla 2.0, selezionare Spark 1.x. In caso contrario, selezionare Spark 2.x. In questo esempio viene usata la versione Spark 1.6.2 (Scala 2.10.5). Assicurarsi di usare il repository contrassegnato come Scala 2.10.x. Non usare il repository contrassegnato come Scala 2.11.x.

      Proprietà della creazione del progetto IntelliJ Scala

  4. Selezionare Fine.

  5. Se la visualizzazione Project (Progetto) non è già aperta, premere ALT+1 per aprirla.
  6. In Project Explorer (Esplora progetti) espandere il progetto e quindi selezionare src.
  7. Fare clic con il pulsante destro del mouse su src, scegliere New (Nuovo) e quindi fare clic su Scala class (Classe Scala).
  8. Nella casella Name (Nome) immettere un nome. Nella casella Kind (Tipo) selezionare Object (Oggetto). Quindi selezionare OK.

    Finestra di dialogo Create New Scala Class (Crea nuova classe Scala)

  9. Incollare il codice seguente nel file con estensione scala:

     import java.util.Random
     import org.apache.spark.{SparkConf, SparkContext}
     import org.apache.spark.SparkContext._
    
     /**
     * Usage: GroupByTest [numMappers] [numKVPairs] [valSize] [numReducers]
     */
     object GroupByTest {
         def main(args: Array[String]) {
             val sparkConf = new SparkConf().setAppName("GroupBy Test")
             var numMappers = 3
             var numKVPairs = 10
             var valSize = 10
             var numReducers = 2
    
             val sc = new SparkContext(sparkConf)
    
             val pairs1 = sc.parallelize(0 until numMappers, numMappers).flatMap { p =>
             val ranGen = new Random
             var arr1 = new Array[(Int, Array[Byte])](numKVPairs)
             for (i <- 0 until numKVPairs) {
                 val byteArr = new Array[Byte](valSize)
                 ranGen.nextBytes(byteArr)
                 arr1(i) = (ranGen.nextInt(Int.MaxValue), byteArr)
             }
             arr1
             }.cache
             // Enforce that everything has been calculated and in cache.
             pairs1.count
    
             println(pairs1.groupByKey(numReducers).count)
         }
     }
    
  10. Dal menu Build (Compila) scegliere Build project (Compila progetto). Verificare che la compilazione venga eseguita correttamente.

Per poter eseguire il collegamento a Hortonworks Sandbox (emulatore), deve essere presente un'applicazione IntelliJ esistente.

Per eseguire il collegamento a un emulatore:

  1. Aprire il progetto in IntelliJ.
  2. Dal menu View (Visualizza) scegliere Tool Windows (Finestre degli strumenti) e quindi selezionare Azure Explorer.
  3. Espandere Azure, fare clic con il pulsante destro del mouse su HDInsight e quindi scegliere Link an Emulator (Collega un emulatore).
  4. Nella finestra di dialogo Link A New Emulator (Collega nuovo emulatore) immettere la password impostata per l'account radice di Hortonworks Sandbox. Immettere quindi valori simili a quelli usati nello screenshot seguente. Quindi selezionare OK.

    Finestra Link a New Emulator (Collega nuovo emulatore)

  5. Per configurare l'emulatore, selezionare Yes (Sì).

Quando è connesso correttamente, l'emulatore (Hortonworks Sandbox) è elencato nel nodo HDInsight.

Inviare l'applicazione Spark Scala a Hortonworks Sandbox

Dopo aver collegato IntelliJ IDEA all'emulatore è possibile inviare il progetto.

Per inviare un progetto a un emulatore:

  1. In Project Explorer (Esplora progetti) fare clic con il pulsante destro del mouse sul progetto e quindi scegliere Submit Spark Application to HDInsight (Invia applicazione Spark a HDInsight).
  2. Completare questi passaggi:

    1. Nell'elenco a discesa Spark cluster (Linux only) (Cluster Spark - solo Linux) selezionare l'ambiente Hortonworks Sandbox locale.
    2. Nella casella Main class name (Nome classe principale) scegliere o immettere il nome della classe principale. Per questa esercitazione, il nome è GroupByTest.
  3. Selezionare Submit (Invia). I log di invio dei processi vengono visualizzati nella finestra degli strumenti di invio Spark.

Passaggi successivi