Öğretici: IntelliJ kullanarak HDInsight'ta Apache Spark için Scala Maven uygulaması oluşturma

Bu öğreticide, IntelliJ IDEA ile Apache Maven kullanarak Scala'da yazılmış bir Apache Spark uygulaması oluşturmayı öğreneceksiniz. Makalede derleme sistemi olarak Apache Maven kullanılır. Ve IntelliJ IDEA tarafından sağlanan Scala için mevcut bir Maven arketipiyle başlar. IntelliJ IDEA’da Scala uygulaması oluşturma işlemi aşağıdaki adımları içerir:

  • Derleme sistemi olarak Maven kullanma.
  • Spark modülü bağımlılıklarını çözümlemek için Proje Nesne Modeli (POM) dosyasını güncelleştirme.
  • Uygulamanızı Scala’da yazma.
  • HDInsight Spark kümelerine gönderilebilen bir jar dosyası oluşturma.
  • Livy kullanarak uygulamayı Spark kümesi üzerinde çalıştırma.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • IntelliJ IDEA için Scala eklentisini yükleme
  • IntelliJ kullanarak bir Scala Maven uygulaması geliştirme
  • Tek başına Scala projesi oluşturma

Önkoşullar

IntelliJ IDEA için Scala eklentisini yükleme

Scala eklentisini yüklemek için aşağıdaki adımları uygulayın:

  1. IntelliJ IDEA’yı açın.

  2. Hoş geldiniz ekranında Eklentileri Yapılandır'a >gidip Eklentiler penceresini açın.

    Screenshot showing IntelliJ Welcome Screen.

  3. Azure Toolkit for IntelliJ için Yükle'yi seçin.

    Screenshot showing IntelliJ Azure Tool Kit.

  4. Yeni pencerede öne çıkan Scala eklentisi için Yükle'yi seçin.

    Screenshot showing IntelliJ Scala Plugin.

  5. Eklenti başarıyla yüklendikten sonra IDE’yi yeniden başlatmanız gerekir.

Uygulama oluşturmak için IntelliJ kullanma

  1. IntelliJ IDEA'yı başlatın ve Yeni Proje Oluştur'u seçerek Yeni Proje penceresini açın.

  2. Sol bölmeden Apache Spark/HDInsight'ı seçin.

  3. Ana pencerede Spark Projesi (Scala) öğesini seçin.

  4. Derleme aracı açılan listesinden aşağıdaki değerlerden birini seçin:

    • Scala için Maven proje oluşturma sihirbazı desteği.
    • Scala projesi için bağımlılıkları yönetmeye ve oluşturmaya yönelik SBT .

    Screenshot showing create application.

  5. İleri'yi seçin.

  6. Yeni Proje penceresinde aşağıdaki bilgileri sağlayın:

    Özellik Açıklama
    Proje adı Bir ad girin.
    Proje konumu Projenizi kaydetmek için konumu girin.
    Proje SDK'sı Bu alan, IDEA'nın ilk kullanımınızda boş olacaktır. Yeni... öğesini seçin ve JDK'nize gidin.
    Spark Sürümü Oluşturma sihirbazı, Spark SDK ve Scala SDK'sı için uygun sürümü tümleştirir. Spark kümesi sürümü 2.0’dan eskiyse Spark 1.x seçeneğini belirleyin. Aksi takdirde, Spark2.x seçeneğini belirleyin. Bu örnekte Spark 2.3.0 (Scala 2.11.8) kullanılır.

    IntelliJ IDEA Selecting the Spark SDK.

  7. Bitir'i seçin.

Tek başına Scala projesi oluşturma

  1. IntelliJ IDEA'yı başlatın ve Yeni Proje Oluştur'u seçerek Yeni Proje penceresini açın.

  2. Sol bölmeden Maven'i seçin.

  3. Bir Proje SDK’sı belirtin. Boşsa, Yeni... öğesini seçin ve Java yükleme dizinine gidin.

  4. Arketipten oluştur onay kutusunu seçin.

  5. Arketipler listesinden öğesini seçin org.scala-tools.archetypes:scala-archetype-simple. Bu arketip doğru dizin yapısını oluşturur ve Scala programını yazmak için gerekli varsayılan bağımlılıkları indirir.

    Screenshot shows the selected archetype in the New Project window.

  6. İleri'yi seçin.

  7. Yapıt Koordinatları'nın kapsamını genişletin. GroupId ve ArtifactId için ilgili değerleri sağlayın. Ad ve Konum otomatik olarak doldurulur. Bu öğreticide aşağıdaki değerler kullanılır:

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

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

  8. İleri'yi seçin.

  9. Ayarları doğrulayıp İleri’yi seçin.

  10. Proje adını ve konumunu doğrulayıp Son’u seçin. Projenin içeri aktarılması birkaç dakika sürer.

  11. Proje içeri aktarıldıktan sonra sol bölmeden SparkSimpleApp>src>test>scala com>microsoft>spark>örneğine> gidin. MySpec'e sağ tıklayın ve sil... öğesini seçin. Uygulama için bu dosyaya ihtiyacınız yoktur. İletişim kutusunda Tamam'ı seçin.

  12. Sonraki adımlarda Spark Scala uygulamasının bağımlılıklarını tanımlamak için pom.xml güncelleştireceksiniz. Bu bağımlılıkların otomatik olarak indirilip çözümlenmesi için Maven'ı yapılandırmanız gerekir.

  13. Dosya menüsünden Ayarlar'ı seçerek Ayarlar penceresini açın.

  14. Ayarlar penceresinde Derleme, Yürütme, Dağıtım>Derleme Araçları>Maven>İçeri Aktarma'ya gidin.

  15. Maven projelerini otomatik olarak içeri aktar onay kutusunu seçin.

  16. Uygula’yı ve sonra Tamam’ı seçin. Ardından proje penceresine geri dönersiniz.

    :::image type="content" source="./media/apache-spark-create-standalone-application/configure-maven-download.png" alt-text="Configure Maven for automatic downloads." border="true":::
    
  17. Sol bölmeden src>main>scala>com.microsoft.spark.example adresine gidin ve App.scala dosyasını açmak için Uygulama'ya çift tıklayın.

  18. Var olan örnek kodu aşağıdaki kodla değiştirin ve değişiklikleri kaydedin. Bu kod HVAC.csv verileri okur (tüm HDInsight Spark kümelerinde kullanılabilir). Altıncı sütunda yalnızca bir basamak içeren satırları alır. Ve çıktıyı küme için varsayılan depolama kapsayıcısı altında /HVACOut'a yazar.

    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. Sol bölmede pom.xml dosyasına çift tıklayın.

  20. <project>\<properties> içinde aşağıdaki segmentleri ekleyin:

    <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. <project>\<dependencies> içinde aşağıdaki segmentleri ekleyin:

    <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. .jar dosyasını oluşturun. IntelliJ IDEA, proje yapıtı olarak JAR dosyası oluşturmayı sağlar. Aşağıdaki adımları uygulayın.

    1. Dosya menüsünden Proje Yapısı... öğesini seçin.

    2. Proje Yapısı penceresinden Yapıtlar'a >artı simgesi +>JAR>Bağımlılıkları olan modüllerden.... gidin.

      `IntelliJ IDEA project structure add jar`.

    3. Modüllerden JAR Oluştur penceresinde, Ana Sınıf metin kutusundaki klasör simgesini seçin.

    4. Ana Sınıf Seç penceresinde varsayılan olarak görüntülenen sınıfı seçin ve ardından Tamam'ı seçin.

      `IntelliJ IDEA project structure select class`.

    5. Modüllerden JAR Oluştur penceresinde hedef JAR'a ayıkla seçeneğinin belirlendiğinden emin olun ve ardından Tamam'ı seçin. Bu ayar, tüm bağımlılıklarla tek bir JAR oluşturur.

      IntelliJ IDEA project structure jar from module.

    6. Çıktı Düzeni sekmesinde Maven projesine dahil edilen tüm jar'lar listelenir. Scala uygulamasının doğrudan bağımlılığı olmayan jar dosyalarını seçip silebilirsiniz. Burada oluşturduğunuz uygulama için, sonuncusu hariç tümünü kaldırabilirsiniz (SparkSimpleApp derleme çıkışı). Silinecek jar'ları seçin ve ardından negatif simgesini -seçin.

      `IntelliJ IDEA project structure delete output`.

      Proje derlemesine ekle onay kutusunun seçili olduğundan emin olun. Bu seçenek, proje her oluşturulduğunda veya güncelleştirildiğinde jar dosyasının oluşturulmasını sağlar. Uygula'yı ve ardından Tamam'ı seçin.

    7. Jar dosyasını oluşturmak için Derleme Yapıtları> Derlemesi'ne >gidin. Proje yaklaşık 30 saniye içinde derlenir. Çıktı jar dosyası, \out\artifacts altında oluşturulur.

      IntelliJ IDEA project artifact output.

Uygulamayı Apache Spark kümesinde çalıştırma

Uygulamayı kümede çalıştırmak için aşağıdaki yaklaşımları kullanabilirsiniz:

  • Uygulama jar dosyasını kümeyle ilişkilendirilmiş Azure Depolama blob'a kopyalayın. Bunu yapmak için, bir komut satırı yardımcı programı olan AzCopy’yi kullanabilirsiniz. Verileri karşıya yüklemek için kullanabileceğiniz çok sayıda başka istemci de mevcuttur. Bunlar hakkında daha fazla bilgi için bkz . HDInsight'ta Apache Hadoop işleri için verileri karşıya yükleme.

  • Spark kümesine uzaktan bir uygulama işi göndermek için Apache Livy kullanın. HDInsight üzerinde Spark kümeleri, Spark işlerini uzaktan göndermek için REST uç noktalarını kullanıma sunan Livy’yi içerir. Daha fazla bilgi için bkz . HDInsight üzerinde Spark kümeleri ile Apache Livy kullanarak Apache Spark işlerini uzaktan gönderme.

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmeyecekseniz, aşağıdaki adımlarla oluşturduğunuz kümeyi silin:

  1. Azure Portal’ında oturum açın.

  2. Üstteki Arama kutusuna HDInsight yazın.

  3. Hizmetler'in altında HDInsight kümeleri'ne tıklayın.

  4. Görüntülenen HDInsight kümeleri listesinde, bu öğretici için oluşturduğunuz kümenin yanındaki ... öğesini seçin.

  5. Sil'i seçin. Evet'i seçin.

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

Sonraki adım

Bu makalede Apache Spark scala uygulaması oluşturmayı öğrendiniz. Bu uygulamayı Livy kullanarak bir HDInsight Spark kümesinde çalıştırmayı öğrenmek için sonraki makaleye ilerleyin.