Tutorial: Buat aplikasi Scala Maven untuk Apache Spark di HDInsight menggunakan IntelliJ

Dalam tutorial ini, Anda belajar cara membuat aplikasi Apache Spark yang ditulis dalam Scala menggunakan Apache Maven dengan IntelliJ IDEA. Artikel ini menggunakan Apache Maven sebagai sistem build. Dan dimulai dengan arketipe Maven yang ada untuk Scala yang disediakan oleh IntelliJ IDEA. Membuat aplikasi Scala di IntelliJ IDEA mencakup langkah-langkah berikut:

  • Gunakan Maven sebagai sistem build.
  • Perbarui file Project Object Model (POM/Model Objek Proyek) untuk menangani dependensi modul Spark.
  • Tulis aplikasi Anda dalam Scala.
  • Buat file jar yang dapat dikirim ke kluster Spark HDInsight.
  • Jalankan aplikasi pada kluster Spark menggunakan Livy.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Pasang plugin Scala untuk IntelliJ IDEA
  • Gunakan IntelliJ untuk mengembangkan aplikasi Scala Maven
  • Buat proyek Scala mandiri

Prasyarat

Pasang plugin Scala untuk IntelliJ IDEA

Lakukan langkah-langkah berikut untuk menginstal plugin Scala:

  1. Buka IntelliJ IDEA.

  2. Pada layar selamat datang, navigasi ke Konfigurasikan>Plugin untuk membuka jendela Plugin.

    Screenshot showing IntelliJ Welcome Screen.

  3. Pilih Instal untuk Azure Toolkit untuk IntelliJ.

    Screenshot showing IntelliJ Azure Tool Kit.

  4. Pilih Instal untuk plugin Scala yang ditampilkan di jendela baru.

    Screenshot showing IntelliJ Scala Plugin.

  5. Setelah plugin berhasil diinstal, Anda harus menghidupkan ulang IDE.

Gunakan IntelliJ untuk membuat aplikasi

  1. Buka IntelliJ IDEA, dan pilih Buat Proyek Baru untuk membuka jendela Proyek Baru.

  2. Pilih Apache Spark/Azure HDInsight dari panel sebelah kiri.

  3. Pilih Proyek Spark (Scala) dari jendela utama.

  4. Dari daftar menurun Alat build, pilih salah satu nilai berikut ini:

    • Maven untuk dukungan wizard pembuatan proyek Scala.
    • SBT untuk mengelola dependensi dan pembangunan proyek Scala.

    Screenshot showing create application.

  5. Pilih Selanjutnya.

  6. Di jendela Proyek Baru, berikan informasi berikut ini:

    Properti Deskripsi
    Nama proyek Masukkan nama.
    Lokasi proyek Masukkan lokasi untuk menyimpan proyek Anda.
    SDK Proyek Bidang ini kosong pada penggunaan IDEA pertama Anda. Pilih Baru... dan navigasi ke JDK Anda.
    Versi Spark Wizard pembuatan mengintegrasikan versi yang tepat untuk SDK Spark dan SDK Scala. Jika versi kluster Spark lebih lama dari 2.0, pilih Spark 1.x. Jika tidak, pilih Spark2.x. Contoh ini menggunakan Spark 2.3.0 (Scala 2.11.8).

    IntelliJ IDEA Selecting the Spark SDK.

  7. Pilih Selesai.

Buat proyek Scala mandiri

  1. Buka IntelliJ IDEA, dan pilih Buat Proyek Baru untuk membuka jendela Proyek Baru.

  2. Pilih Maven dari panel kiri.

  3. Tentukan SDK Proyek. Jika kosong, pilih Baru... dan navigasi ke direktori instalasi Java.

  4. Pilih kotak centang Buat dari arketipe.

  5. Dari daftar arketipe, pilih org.scala-tools.archetypes:scala-archetype-simple. Arketipe ini membuat struktur direktori yang tepat dan mengunduh dependensi default yang diperlukan untuk menulis program Scala.

    Screenshot shows the selected archetype in the New Project window.

  6. Pilih Selanjutnya.

  7. Luaskan Koordinat Artefak. Berikan nilai yang relevan untuk GroupId, dan ArtifactId. Nama, dan Lokasi akan otomatis diisi. Nilai-nilai berikut digunakan dalam tutorial ini:

    • GroupId: com.microsoft.spark.example
    • ArtifactId: SparkSimpleApp

    Screenshot shows the Artifact Coordinates option in the New Project window.

  8. Pilih Selanjutnya.

  9. Verifikasi pengaturan tersebut lalu pilih Berikutnya.

  10. Verifikasi nama dan lokasi proyek, lalu pilih Selesai. Proyek ini akan memakan waktu beberapa menit untuk mengimpor.

  11. Setelah proyek diimpor, dari panel kiri navigasi ke SparkSimpleApp>src>test>scala>com>microsoft>spark>example. Klik kanan MySpec, lalu pilih Hapus.... Anda tidak memerlukan file ini untuk aplikasi ini. Pilih OK dalam kotak dialog.

  12. Pada langkah selanjutnya, Anda perbarui pom.xml untuk menentukan dependensi aplikasi Spark Scala. Supaya dependensi tersebut diunduh dan ditangani secara otomatis, Anda harus mengonfigurasikan Maven.

  13. Dari menu File, pilih Pengaturan untuk membuka jendela Pengaturan.

  14. Dari jendela Pengaturan, navigasi ke Build, Eksekusi, Penyebaran>Alat Build>Maven>Mengimpor.

  15. Pilih kotak centang Impor proyek Maven secara otomatis.

  16. Pilih Terapkan, lalu pilih OK. Anda kemudian akan dikembalikan ke jendela proyek.

    :::image type="content" source="./media/apache-spark-create-standalone-application/configure-maven-download.png" alt-text="Configure Maven for automatic downloads." border="true":::
    
  17. Dari panel kiri, navigasi ke src>main>scala>com.microsoft.spark.example, lalu klik dua kali App untuk membuka App.scala.

  18. Ganti kode sampel yang ada dengan kode berikut dan simpan perubahan. Kode ini membaca data dari HVAC.csv (tersedia di semua kluster Spark HDInsight). Ambil baris yang hanya memiliki satu digit di kolom keenam. Dan tulis output ke /HVACOut di dalam kontainer penyimpanan default untuk kluster itu.

    package com.microsoft.spark.example
    
    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    /**
      * Test IO to wasb
      */
    object WasbIOTest {
        def main (arg: Array[String]): Unit = {
            val conf = new SparkConf().setAppName("WASBIOTest")
            val sc = new SparkContext(conf)
    
            val rdd = sc.textFile("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
            //find the rows which have only one digit in the 7th column in the CSV
            val rdd1 = rdd.filter(s => s.split(",")(6).length() == 1)
    
            rdd1.saveAsTextFile("wasb:///HVACout")
        }
    }
    
  19. Di panel kiri, klik dua kali pom.xml.

  20. Dalam <project>\<properties> tambahkan segmen berikut:

    <scala.version>2.11.8</scala.version>
    <scala.compat.version>2.11.8</scala.compat.version>
    <scala.binary.version>2.11</scala.binary.version>
    
  21. Dalam <project>\<dependencies> tambahkan segmen berikut:

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_${scala.binary.version}</artifactId>
        <version>2.3.0</version>
    </dependency>
    
    Save changes to pom.xml.
    
  22. Membuat file .jar. IntelliJ IDEA memungkinkan pembuatan JAR sebagai artefak proyek. Lakukan langkah-langkah berikut.

    1. Dari menu File, pilih Struktur Proyek....

    2. Dari jendela Struktur Proyek, navigasi ke Artefak>simbol plus +>JAR>Dari modul dengan dependensi....

      `IntelliJ IDEA project structure add jar`.

    3. Di jendela Buat JAR dari Modul, pilih ikon folder di kotak teks Kelas Utama.

    4. Di jendela Pilih Kelas Utama, pilih kelas yang muncul secara default lalu pilih OK.

      `IntelliJ IDEA project structure select class`.

    5. Di jendela Buat JAR dari Modul, pastikan opsi ekstrak ke JAR target dipilih, lalu pilih OK. Pengaturan ini membuat satu JAR dengan semua dependensi.

      IntelliJ IDEA project structure jar from module.

    6. Tab Tata Letak Output mencantumkan semua jar yang termasuk dalam bagian proyek Maven. Anda dapat memilih dan menghapus jar yang tidak memiliki dependensi langsung dengan aplikasi Scala. Untuk aplikasi ini, yang Anda buat di sini, Anda dapat menghapus semua kecuali yang terakhir (output kompilasi SparkSimpleApp). Pilih jar yang akan dihapus lalu pilih simbol negatif -.

      `IntelliJ IDEA project structure delete output`.

      Pastikan kotak centang Sertakan dalam build proyek dipilih. Opsi ini memastikan bahwa jar dibuat setiap kali proyek dibangun atau diperbarui. Pilih Terapkan lalu pilih OK.

    7. Untuk membuat jar, navigasi ke Build>Bangun Artefak>Bangun. Proyek ini akan dibangun dalam waktu sekitar 30 detik. Jar output dibuat di \out\artefak.

      IntelliJ IDEA project artifact output.

Jalankan aplikasi pada kluster Apache Spark

Untuk menjalankan aplikasi pada kluster, Anda dapat menggunakan pendekatan berikut:

Membersihkan sumber daya

Jika Anda tidak akan terus menggunakan aplikasi ini, hapus kluster yang Anda buat dengan langkah-langkah berikut:

  1. Masuk ke portal Azure.

  2. Dalam kotak Pencarian di bagian atas, ketik Microsoft Azure HDInsight.

  3. Pilih kluster Microsoft Azure HDInsight di Layanan.

  4. Dalam daftar kluster HDInsight yang muncul, pilih ... di samping kluster yang Anda buat untuk tutorial ini.

  5. Pilih Hapus. Pilih Ya.

Screenshot showing how to delete an HDInsight cluster via the Azure portal.

Langkah selanjutnya

Di artikel ini, Anda belajar cara membuat aplikasi scala Apache Spark. Lanjutkan ke artikel berikutnya untuk mempelajari cara menjalankan aplikasi ini pada kluster Spark HDInsight menggunakan Livy.