البرنامج التعليمي: إنشاء تطبيق Scala Maven لـ Apache Spark في HDInsight باستخدام IntelliJ

ستتعلم في هذا البرنامج التعليمي، كيفية إنشاء تطبيق Apache Spark مكتوباً بلغة Scala باستخدام Apache Maven مع IntelliJ IDEA. يستخدم المقال أداة Apache Maven كنظام بناء. ويبدأ بالنموذج الأصلي Maven القائم لـ Scala المقدمة من IntelliJ IDEA. يشتمل إنشاء تطبيق Scala في IntelliJ IDEA على الخطوات التالية:

  • استخدم أداة Maven كنظام البناء.
  • حدث ملف نموذج عنصر المشروع (POM) لحل تبعيات الوحدة النمطية Spark.
  • اكتب تطبيقك بلغة Scala.
  • أنشئ ملف jar الذي يمكن إرساله إلى مجموعات HDInsight Spark.
  • شغل التطبيق على مجموعة Spark باستخدام Livy.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • ثبت المكون الإضافي Scala لـ IntelliJ IDEA
  • استخدام IntelliJ لتطوير تطبيق Scala Maven
  • إنشاء مشروع Scala مستقل

المتطلبات الأساسية

ثبت المكون الإضافي Scala لـ IntelliJ IDEA

اتبع الخطوات التالية لتثبيت المكون الإضافي Scala:

  1. افتح IntelliJ IDEA.

  2. على شاشة الترحيب، انتقل إلى تكوين>المكونات الإضافية لفتح نافذة المكونات الإضافية.

    Screenshot showing IntelliJ Welcome Screen.

  3. حدد Install لمجموعة أدوات Azure لـ IntelliJ.

    Screenshot showing IntelliJ Azure Tool Kit.

  4. حدد تثبيت المكون الإضافي Scala الذي يظهر في النافذة الجديدة.

    Screenshot showing IntelliJ Scala Plugin.

  5. عقب تثبيت المكون الإضافي بنجاح، يجب إعادة تشغيل IDE.

استخدم IntelliJ لإنشاء تطبيق

  1. ابدأ تشغيل IntelliJ IDEA، وحدد "Create New Project" لفتح نافذة "New Project".

  2. حدد Apache Spark/HDInsight من الجزء الأيمن.

  3. حدد مشروع Spark (Scala) من النافذة الرئيسية.

  4. من القائمة المنسدلة إنشاء أداة حدد إحدى القيم التالية:

    • Maven لدعم معالج إنشاء مشروع Scala.
    • SBT لإدارة التبعيات والبناء لمشروع project.

    Screenshot showing create application.

  5. حدد التالي.

  6. في إطار المشروع الجديد وفر المعلومات التالية:

    الخاصية ‏‏الوصف
    اسم المشروع أدخل اسمًا.
    موقع المشروع أدخل الموقع لحفظ المشروع.
    مشروع SDK سيكون هذا الحقل فارغاً في أول استخدام لـ IDEA. حدد جديد... وانتقل إلى JDK.
    إصدار Spark يدمج معالج الإنشاء الإصدار المناسب لـSpark SDK و Scala SDK. إذا كان إصدار مجموعة Spark أقدم من 2.0، فحدد Spark 1.x. أو حدد Spark2.x. يستخدم هذا المثال Spark 2.3.0 (Scala 2.11.8).

    IntelliJ IDEA Selecting the Spark SDK.

  7. حدد إنهاء.

إنشاء مشروع Scala مستقل

  1. ابدأ تشغيل IntelliJ IDEA، وحدد "Create New Project" لفتح نافذة "New Project".

  2. حدد Maven من الجزء الأيمن.

  3. حدد مشروع SDK. إذا كان فارغاً، فحدد جديد... وانتقل إلى دليل تثبيت Java.

  4. حدد خانة الاختيار إنشاء من النموذج الأصلي.

  5. حدد org.scala-tools.archetypes:scala-archetype-simple من قائمة النماذج الأصلية. ينشئ هذا النموذج الأصلي بنية الدليل الصحيحة و يقوم بتحميل التبعيات الافتراضية المطلوبة لكتابة برنامج Scala.

    Screenshot shows the selected archetype in the New Project window.

  6. حدد التالي.

  7. توسيع Artifact Coordinate. توفير القيم ذات الصلة لـ GroupId، و ArtifactId. سيتم الملء التلقائي لـ الاسم، والموقع. يتم استخدام القيم التالية في هذا البرنامج التعليمي:

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

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

  8. حدد التالي.

  9. تحقق من الإعدادات ثم حدد التالي.

  10. تحقق من اسم المشروع وموقعه، ثم حدد إنهاء. سيستغرق المشروع بضع دقائق لإتمام عملية الاستيراد.

  11. بمجرد استيراد المشروع، من الجزء الأيمن انتقل إلى SparkSimpleApp>src>اختبار>scala>com>مثال>microsoft>spark. انقر بزر الماوس الأيمن فوق MySpec، ثم حدد حذف.... لست بحاجة إلى هذا الملف للتطبيق. في مربع الحوار، حدد موافق.

  12. في الخطوات اللاحقة، يمكنك تحديث pom.xml لتعريف التبعيات لتطبيق Spark Scala. لتحميل هذه التبعيات وحلها تلقائياً، يجب تكوين Maven.

  13. من القائمة ملف، حدد الإعدادات لفتح نافذة الإعدادات.

  14. من نافذة الإعدادات، انتقل إلى إنشاء وتنفيذ ونشراستيراد >Build>Tools>Maven.

  15. حدد خانة الاختيار استيراد مشاريع Maven تلقائياً.

  16. حدد Apply، ثم حدد OK. ثم سيتم إرجاعك إلى نافذة المشروع.

    :::image type="content" source="./media/apache-spark-create-standalone-application/configure-maven-download.png" alt-text="Configure Maven for automatic downloads." border="true":::
    
  17. من الجزء الأيمن، انتقل إلى src>الرئيسي>scala>com.microsoft.spark.example،ثم انقر نقراً مزدوجاً فوق التطبيق لفتح App.scala.

  18. استبدل نموذج التعليمات البرمجية الموجودة مع التعليمات البرمجية التالية واحفظ التغييرات. تُقرأ هذه التعليمات البرمجية من HVAC.csv (متوفرة على كافة مجموعات HDInsight Spark). تسترد الصفوف التي تحتوي على رقم واحد فقط في العمود السادس. وتكتب الإخراج إلى /HVACOut تحت حاوية التخزين الافتراضية للمجموعة.

    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. في الجزء الأيمن، انقر نقراً مزدوجاً فوق pom.xml.

  20. داخل <project>\<properties> أضف المقاطع التالية:

    <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> أضف المقاطع التالية:

    <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. تمكن IntelliJ IDEA من إنشاء JAR كبيانات اصطناعية للمشروع. نفذ الخطوات التالية.

    1. من القائمة ملف، حدد بنية المشروع....

    2. من نافذة بنية المشروع، انتقل إلى Artifacts>رمز زائد +>JARمن وحدات >مع تبعيات....

      `IntelliJ IDEA project structure add jar`.

    3. في نافذة إنشاء JAR من الوحدات النمطية حدد رمز المجلد في مربع النص فئة رئيسية.

    4. في نافذة تحديد الفئة الرئيسية، حدد الفئة التي تظهر افتراضياً ثم حدد موافق.

      `IntelliJ IDEA project structure select class`.

    5. في نافذة إنشاء JAR من الوحدات النمطية، تأكد من تحديد خيارفك الضغط إلى الهدف JAR، ثم حدد موافق. ينشئ هذا الإعداد JAR واحداً مع جميع التبعيات.

      IntelliJ IDEA project structure jar from module.

    6. تدرج علامة التبويب تخطيط الإخراج جميع ملفات jar المدرجة كجزء من مشروع Maven. يمكنك تحديد وحذف الملفات التي لا توجد لها تبعية مباشرة لدى تطبيق Scala. بالنسبة إلى التطبيق، الذي تقوم بإنشائه هنا، يمكنك إزالة الجميع باستثناء الأخير ( تجميع إخراج SparkSimpleApp ). حدد الملفات بامتداد jar لحذفها ثم حدد الرمز السالب -.

      `IntelliJ IDEA project structure delete output`.

      تأكد من تحديد خانة الاختيار إدراج في مشروع البناء. يضمن هذا الخيار إنشاء ملف jar في كل مرة يتم فيها بناء المشروع أو تحديثه. حدد تطبيق ثم موافق.

    7. لإنشاء ملف jar، انتقل إلى إنشاء >Build Artifacts>إنشاء. سيستغرق تجميع المشروع حوالي 30 ثانية. يتم إنشاء ملف الإخراج بامتداد jar ضمن \out\artifacts.

      IntelliJ IDEA project artifact output.

تشغيل التطبيق على مجموعة Apache Spark

لتشغيل التطبيق على المجموعة، يمكنك استخدام الطرق التالية:

  • نسخ ملف jar للتطبيق إلى Azure Storage blob المقترن بالمجموعة. يمكنك استخدام الأداة المساعدة AzCopy، وهي أداة سطر الأوامر، للقيام بذلك. هناك العديد من العملاء الآخرين أيضاً الذين يمكنك استخدامهم لتحميل البيانات. يمكنك العثور على المزيد عنهم في بيانات تحميل وظائف Apache Hadoop في HDInsight.

  • استخدم Apache Livy لإرسال مهمة طلب عن بعد إلى مجموعة Spark. تتضمن مجموعات Spark على HDInsight Livy التي تعرض نقاط نهاية REST لإرسال وظائف Spark عن بعد. لمزيد من المعلومات، يرجى الاطلاع على إرسال وظائف Apache Spark عن بعد باستخدام Apache Livy مع مجموعات Spark على HDInsight.

تنظيف الموارد

إذا كنت لن تستمر في استخدام هذا التطبيق، فاحذف المجموعة التي قمت بإنشائها عن طريق اتباع الخطوات التالية:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. في المربع بحث في الأعلى، اكتب HDInsight.

  3. حدد مجموعات HDInsight ضمن الخدمات.

  4. في قائمة مجموعات HDInsight التي تظهر، حدد ... بجانب المجموعة التي قمت بإنشائها لهذا البرنامج التعليمي.

  5. حدد حذف. حدد نعم.

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

الخطوة التالية

تعلمت في هذه المقالة كيفية إنشاء تطبيق Apache Spark scala. انتقل إلى المقالة التالية لمعرفة كيفية تشغيل هذا التطبيق على مجموعة HDInsight Spark باستخدام Livy.