تخطي إلى المحتوى الرئيسي

جدول

نظره عامه

يتيح لك جدول Ilum إعداد وإدارة الجداول الزمنية للوظائف الفردية بسهولة من خلال واجهة سهلة الاستخدام وسهلة الاستخدام. يبسط عملية تكوين الجداول الزمنية للتنفيذ بسهولة.

تحت الغطاء ، تستفيد هذه الميزة من Kubernetes CronJobs ، والتي تستخدم تعبيرات CRON لتحديد وقت تشغيل الوظائف بدقة. في الوقت المحدد ، يقوم CronJob بتشغيل طلب إلى الواجهة الخلفية ل Ilum ، والذي ينسق إنشاء وظيفة واحدة.

حالات الاستخدام

استيعاب البيانات

جلب البيانات بشكل دوري من واجهات برمجة التطبيقات الخارجية أو المصادر الأخرى وتحميلها في قاعدة بيانات أو نظام ملفات لمزيد من المعالجة أو التحليل.

تنسيق مسار البيانات (ETL)

أتمتة مهام ETL (الاستخراج والتحويل والتحميل) المستندة إلى Spark التي تستخرج البيانات الأولية من مصادر متعددة وتطبق التحويلات المعقدة وتقوم بتحميل النتائج في مستودع بيانات

إعداد التقارير وتجميع البيانات للتحليلات

جدولة مهمة Spark لتجميع مجموعات البيانات الكبيرة من مصادر مختلفة (على سبيل المثال، السجلات وبيانات المبيعات وتفاعلات المستخدم) في جداول ملخص مستخدمة في لوحات المعلومات والتقارير.

تنظيف البيانات

جدولة مهمة Spark التي تقوم بتنظيف البيانات، مثل إزالة التكرارات أو تصحيح الإدخالات غير الصالحة أو تصفية البيانات، في مجموعة بيانات كبيرة مخزنة في نظام موزع

بدء الاستخدام

وظيفة Python المجدولة

المثال أدناه هو مهمة Spark بسيطة في Python تقوم بإنشاء بيانات عشوائية وكتابتها إلى حاوية S3. ستتم جدولة هذه الوظيفة ليتم تشغيلها في فاصل زمني محدد.

  1. كتابة وظيفة واحدة

    من بايسبارك . SQL استورد جلسة سبارك 
    من بايسبارك . SQL استورد إطار البيانات
    من بايسبارك . SQL استورد صف
    استورد عشوائي
    من التاريخ والوقت استورد التاريخ والوقت


    مواطنه generate_sample_data ( n ) :
    أعاد [ صف ( معرف = أنا , اسم = و"Name_ { أنا } " , قيمة = عشوائي . راندرانج ( 70 , 100 ) ) من أجل أنا في نطاق ( n ) ]


    لو __اسم__ == "__main__" :
    شراره = جلسة سبارك . بان\
    . appName ( "وظيفتي الشرارة" ) \
    . getOrCreate ( )

    بيانات = generate_sample_data ( 100 )
    مدافع = شراره . createDataFrame ( بيانات )

    current_datetime = التاريخ والوقت . الآن ( )
    current_timestamp = current_datetime . strftime ( "٪Y-٪m-٪d ٪H:٪M:٪S" )

    output_path = f"s3a://ilum-files/generated_data/ { current_timestamp } "
    مدافع . يكتب . طريقة ( "الكتابة فوق" ) . الباركيه ( output_path )

    شراره . وقف ( )

    احفظ الملف ك <اسم الملف الخاص بك>.py

  2. إنشاء جدول زمني

    عند إنشاء الجدول الزمني، حدد ما يلي:

    • علامة التبويب عام:
      • اسم اسم الجدول الزمني:
      • عنقود نظام المجموعة الذي سيتم تشغيل المهمة عليه:
      • اللغة بايثون في هذه الحالة:
      • فصل : <اسم ملفك> بدون .py امتداد
    • علامة تبويب التوقيت:
      • اختر القيمة التي تناسب احتياجاتك. يمكن استخدام تعبير CRON مخصص إذا كانت الخيارات المحددة مسبقا لا تفي بمتطلباتك.

        إيلوم

    • علامة تبويب الموارد:
      • PyFiles تحميل البرنامج النصي Python:
  3. مراقبة سجلات الوظائف الظاهرة

    بعد إنشاء الجدول، يكون نشطا بالفعل وسيقوم بتشغيل الوظائف وفقا للإعدادات التي حددتها.

    تتصرف الوظائف الفردية التي أطلقها الجدول الزمني بنفس الطريقة التي تتصرف بها الوظائف الفردية العادية في Ilum: على سبيل المثال ، يمكنك الذهاب إلى وظائف لعرض قائمة الوظائف التي تم إطلاقها بواسطة الجداول الزمنية.

    إيلوم

وظيفة سكالا المجدولة

هذا المثال هو نفسه مثال Python ، ولكنه مكتوب بلغة Scala.

  1. إنشاء مشروع sbt

    أثناء إنشاء المشروع ، من المهم تضمين سبارك SQL التبعية في build.sbt ملف.

    libraryDependencies += "org.apache.spark" ٪٪ "spark-sql" ٪ "3.5.3" ٪ "متوفر" 

    ضع في اعتبارك أن إصدار التبعية يجب أن يتطابق مع إصدار Spark الذي يعمل على نظام المجموعة.

  2. كتابة وتجميع وظيفة واحدة

    استورد  org. apache. شراره . SQL . types. { IntegerType,  StringType,  StructField,  StructType} 
    استورد org. apache. شراره . SQL . { صف , جلسة سبارك }

    استورد java. time. LocalDateTime
    استورد java. time. format. DateTimeFormatter
    استورد سكالا . util. Random

    كائن رئيسي {
    private مواطنه generateSampleData( n : Int) : Seq[ صف ] = {
    ( 0 until n) . خريطة ( أنا =>صف ( أنا , s "Name_$أنا " , Random. nextInt( 30 ) + 70 ) )
    }

    مواطنه رئيسي ( أرجس : Array[ String] ) : Unit = {
    valشراره = جلسة سبارك . builder( )
    . appName ( "وظيفتي الشرارة" )
    . getOrCreate ( )

    valبيانات = generateSampleData( 100 )
    valمدافع = شراره . createDataFrame (
    شراره . sparkContext . موازاة ( بيانات ) ,
    StructType(
    List(
    StructField( "المعرف" , IntegerType, nullable = خطأ ) ,
    StructField( "الاسم" , StringType, nullable = خطأ ) ,
    StructField( "value", IntegerType, nullable = خطأ )
    )
    )
    )

    val currentDateTime = LocalDateTime. الآن ( )
    val currentTimestamp = currentDateTime. format( DateTimeFormatter. ofPattern( "yyyy-MM-dd HH:mm:ss") )

    val outputPath = s "s3a://ilum-files/generated_data/$currentTimestamp"
    مدافع . يكتب . طريقة ( "الكتابة فوق" ) . الباركيه ( outputPath)

    شراره . وقف ( )
    }
    }

    الآن يمكن تجميع المشروع في ملف JAR. بينما عادة ما تريد "جرة سمينة" مع تضمين جميع التبعيات ، هذه المهمة بسيطة بما يكفي لتشغيلها مع التبعيات التي توفرها نظام المجموعة.

    لحزم المشروع بسرعة، قم بتشغيل حزمة SBT أمر.

  3. إنشاء جدول زمني

    عند إنشاء الجدول الزمني، حدد ما يلي:

    • علامة التبويب عام:
      • اسم اسم الجدول الزمني:
      • عنقود نظام المجموعة الذي سيتم تشغيل المهمة عليه:
      • اللغة سكالا في هذه الحالة:
      • فصل اسم الفئة الأساسي.: في حالتنا ، يجب أن يضع sbt ملف الفئة في جذر JAR ، لذلك رئيسي يجب أن يكون كافيا.
    • علامة تبويب التوقيت:
      • اختر القيمة التي تناسب احتياجاتك. يمكن استخدام تعبير CRON مخصص إذا كانت الخيارات المحددة مسبقا لا تفي بمتطلباتك.

        إيلوم

    • علامة تبويب الموارد:
      • الجرار تحميل ملف JAR:
  4. مراقبة سجلات الوظائف الظاهرة

    بعد إنشاء الجدول، يكون نشطا بالفعل وسيقوم بتشغيل الوظائف وفقا للإعدادات التي حددتها.

    تتصرف الوظائف الفردية التي أطلقها الجدول الزمني بنفس الطريقة التي تتصرف بها الوظائف الفردية العادية في Ilum: على سبيل المثال ، يمكنك الذهاب إلى وظائف لعرض قائمة الوظائف التي تم إطلاقها بواسطة الجدول.

    إيلوم

تحميل مثال الجدول الزمني

يقدم Ilum مثالا على جدول زمني لمساعدة المستخدمين الجدد على البدء بسرعة. مثال على تحميل الجدول الزمني ممكن بشكل افتراضي. ومع ذلك ، يمكنك تعطيله باستخدام --set ilum-core.examples.schedule=false .

النصائح

استفد من القوة الكاملة لتعبيرات CRON

بينما يأتي Ilum مع خيارات محددة مسبقا للجدولة، يمكنك أيضا استخدام تعبيرات CRON المخصصة لإعداد جداول زمنية أكثر تعقيدا.

يتكون تعبير cron من 5 حقول: 
<minute> <hour> <day-of-month> <month> <day-of-week>

* - كل وحدة زمنية
? - أي وحدة زمنية (؟ في حقل أيام الأسبوع تؤدي إلى إشعال يوم الأسبوع)
- - النطاق (1-5)
، - القيم: (1,5)
/ - الزيادات (5/15 في حقل الدقيقة = 5 ، 20 ، 35 ، 50)

امثله :

كل ساعة: 
0 * * * *

كل يوم أحد الساعة 3 صباحا:
0 3 * * 0

كل 15 دقيقة كل يوم:
0/15 0 * * ?

كل خمس دقائق تبدأ في الساعة 1 ظهرا ، وتنتهي في الساعة 1:55 مساء ثم تبدأ في الساعة 6 مساء وتنتهي في الساعة 6:55 مساء ، كل يوم:
0/5 13,18 * * ?

إذا كنت تريد معرفة المزيد ، فراجع وثائق وظيفة Cron الخاصة ب Kubernetes .

اختبر وظيفتك قبل الجدولة

يتم إطلاق الوظائف المجدولة بشكل دوري ، لذلك من الضروري التأكد من أن الوظيفة تعمل بشكل صحيح. لأن الوظائف المجدولة تتصرف بنفس طريقة الوظائف الفردية العادية ، يمكنك اختبار التنفيذ عن طريق تشغيل وظيفة واحدة قبل إنشاء جدول.

الجدول الزمني يطلق وظائف Ilum الفردية

يتم إطلاق الوظائف المجدولة كوظائف فردية في Ilum. وهذا يعني أن جميع التكوينات والسجلات والمخرجات والميزات الأخرى المتوفرة للمهام الفردية متوفرة أيضا للمهام المجدولة.

قم بإيقاف تشغيل الجداول عند عدم الحاجة

إذا لم تكن بحاجة إلى تشغيل المهمة بشكل دوري ، فيجب عليك إيقاف تشغيل الجداول لتجنب إهدار الموارد. للقيام بذلك ، يمكنك النقر فوق الزر تورع في الزر جداول التبويب.

تعديل جدولك بدلا من إنشاء جدوله جديدة

إذا كنت تريد تغيير تكوينات جدول حالي، فانقر فوق حرر عليه.