Usare gli strumenti HDInsight per IntelliJ con Hortonworks Sandbox

Informazioni su come usare gli strumenti HDInsight per IntelliJ per sviluppare applicazioni Apache Scala e testare le applicazioni in Hortonworks Sandbox in esecuzione sulla workstation. IntelliJ IDEA è un ambiente di sviluppo integrato (IDE) Java per lo sviluppo di software per computer. Dopo aver sviluppato e testato le applicazioni in Hortonworks Sandbox, è possibile trasferirle in Azure HDInsight.

Prerequisiti

Prima di iniziare questa esercitazione, è necessario avere:

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 dalla workstation.
  2. Fare clic su Create New Project (Crea nuovo progetto).
  3. Fare clic su HDInsight nel pannello sinistro, fare clic su Spark on HDInsight (Scala) (Spark in HDInsight - Scala) nel pannello destro, quindi fare clic su Next (Avanti).

    Creare il progetto IntelliJ Scala

    • Build tool (Strumento di compilazione): la procedura guidata di creazione del progetto Scala supporta Maven o SBT per la gestione delle dipendenze e la compilazione per il progetto Scala. Selezionare uno dei valori in base alle necessità.
  4. Immettere le seguenti informazioni:

    Proprietà della creazione del progetto IntelliJ Scala

    • Project name (Nome progetto): specificare un nome per il progetto.
    • Project location (Percorso progetto): specificare un percorso per il progetto.
    • Project SDK (SDK progetto): fare clic su New (Nuovo), su JDK e quindi specificare la cartella di Java JDK versione 7 o successiva. Usare Java 1.8 per cluster Spark 2.x, Java 1.7 per cluster Spark 1.x. Il percorso predefinito è C:\Programmi\Java\jdk1.8.x_xxx.
    • Versione di Spark: la procedura guidata di creazione del progetto Scala integra la versione corretta per Spark SDK e Scala SDK. Se la versione del cluster Spark è inferiore a 2.0, scegliere 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). Verificare anche che si stia usando l'archivio contrassegnato come Scala 2.10.x e non quello contrassegnato come Scala 2.11.x.
  5. Fare clic su Fine.
  6. Premere [ALT]+1 per aprire la visualizzazione progetto, se non è già aperta.
  7. Da Project Explorer espandere il progetto e quindi fare clic su src.
  8. Fare clic con il pulsante destro del mouse su src, scegliere New (Nuovo) e quindi fare clic su Scala class (Classe Scala).
  9. Specificare un nome, selezionare Object (Oggetto) in Kind (Tipo), quindi fare clic su OK.

    Creare una nuova classe IntelliJ Scala

  10. 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)
        }
    }
    
  11. Nel menu Build (Compila) fare clic su Build project (Compila progetto). Accertarsi che la compilazione venga completata correttamente.

È necessario avere un'applicazione IntelliJ esistente prima di eseguire il collegamento a Hortonworks Sandbox (emulatore).

Per eseguire il collegamento a un emulatore

  1. Aprire il progetto in IntelliJ, se non è già aperto.
  2. Nel menu View (Visualizza) selezionare Tool Windows (Finestre degli strumenti) e quindi fare clic su 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. Immettere la password configurata per l'account radice di Hortonworks Sandbox e il resto dei valori in modo simile allo screenshot seguente, quindi fare clic su OK.

    IntelliJ - Collegare un emulatore

  5. Fare clic su Yes per configurare l'emulatore.

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

Inviare l'applicazione Spark Scala alla 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. Specificare i campi seguenti:

    • Spark cluster (Linux only) ( Cluster Spark - solo Linux): selezionare l'ambiente Hortonworks Sandbox locale.
    • Main class name (Nome classe principale): scegliere o immettere il nome della classe principale. Per questa esercitazione è GroupByTest.
  3. Fare clic su Submit. I log di invio dei processi vengono visualizzati nella finestra degli strumenti di invio Spark.

Passaggi successivi: