المراجعة والاختبار النهائي
عشر وحدات تنتقل من فكرة معمار موزَّع إلى نموذج مُدرَّب على 60 مليون رحلة. هذه هي الدورة مُكثَّفة، ثمّ الخيوط التي تعبرها.
الدورة في لمحة
| الوحدة | الفكرة الجوهريّة الواجب حفظها |
|---|---|
| 1. المعمارية | المحرّك يخطّط، المنفّذون يحسبون؛ الأقسام حبيبة التوازي؛ Spark مبالَغ فيه تحت 10 غيغابايت |
| 2. RDD/DataFrame/Dataset | DataFrame هو الافتراضي بفضل Catalyst؛ RDD صريح لكنّه أعمى؛ Dataset غير موجود في PySpark |
| 3. التقييم الكسول | لا شيء يحسب قبل الإجراء؛ explain يُظهر الخطّة الفعليّة؛ التحويلات الواسعة تُطلق خلطًا |
| 4. الصيغ العمودية | Parquet مقسَّم أسرع من CSV بعشرة أضعاف؛ inferSchema مرور مضاعف على البيانات |
| 5. المحوّلات والمقدِّرات | كلّ شيء يعمل على عمود features متّجهي واحد؛ VectorAssembler هو الجامع |
| 6. Pipeline والتحقّق المتقاطع | التمهيد داخل Pipeline إجباريّ؛ خارجه تسرَّب البيانات مضمون |
| 7. الخوارزميات | انحدار وأشجار و ALS متاحة؛ XGBoost وDeep Learning يحتاجان مكتبات خارجيّة |
| 8. الضبط | AQE يعالج عدم التوازن؛ coalesce يدمج بلا خلط؛ broadcast join لِلجداول الصغيرة |
| 9. الكتابة والتكامل | partitionOverwriteMode="dynamic" لِلجدولة؛ PipelineModel.save يحفظ كلّ شيء |
| 10. المشروع | Spark ML قرار عمل لا ترقية طبيعيّة؛ في كثير من الحالات pandas + LightGBM أنجع |
الخيوط التي تعبر الدورة
الأقسام تفسِّر كلّ شيء. أكثر مفهوم يتكرَّر في الوحدات الثمان الأولى هو القسم. عدد الأقسام يحدِّد التوازي (الوحدة 1). التحويلة الواسعة تعيد توزيع الأقسام عبر الخلط (الوحدة 3). Parquet المقسَّم يسمح بتقليم الأقسام (الوحدة 4). عدم توازن مفاتيح الخلط ينتج أقسامًا غير متساوية (الوحدة 8). فَهْم القسم يجعل بقيّة الدورة تُستنتَج بدل حفظها.
التقييم الكسول مصدر لِلمزايا والأخطاء معًا. يُمكّن Catalyst من تحسين الاستعلام قبل تشغيله (الوحدة 2)، ويُمكِّن Spark من عدم قراءة الأعمدة أو الأقسام غير المفيدة (الوحدة 4). لكنّه يجعل count() بعد كلّ تحويلة سلوكًا مدمّرًا (الوحدة 3)، ويُخفي كلفة التحويلات الواسعة إلى ظهور الإجراء. من لم يقرأ explain قبل تشغيل مهمّته الكبيرة يعمل بعين مغمَضَة.
التمهيد داخل الـPipeline لا خارجه. هذه هي القاعدة الوحيدة التي لا استثناء لها في هذه الدورة. كلّ StringIndexer و StandardScaler و Imputer يتعلّم شيئًا من البيانات، وإخراج أيّها خارج الـPipeline يعني حسابه على مجموعة تشمل التحقّق، وهذا تسرُّب صامت (الوحدة 6). المقياس لن يشير إلى الخطأ. النموذج سيرى في الإنتاج بيانات لم يرَها في التمهيد فتنهار توقّعاته بلا سبب ظاهر.
Spark ليس ترقية طبيعيّة لـpandas. هو أداة أخرى لِمسألة أخرى. pandas + XGBoost/LightGBM على آلة واحدة أسرع في التطوير، أدقّ عادةً على نفس البيانات، وأرخص. Spark ML مبرَّر حين البيانات نفسها موزَّعة، أو حين تحتاج مئات النماذج المتوازية، أو حين تكون العيّنة الصادقة مستحيلة. القرار عمل، لا صيت تقنيّ.
الحجم لا يُنتج دقّة تلقائيًّا. الوحدة 10 أظهرت أنّ نقطتَي AUC على 60 مليون سطر لا تُنتَج مجّانًا: تحتاج عنقودًا و 40 دقيقة و 12 دولارًا للتدريب. الحكم مقارَنة بين قيمة النموذج عليك وكلفة توزيعه. في كثير من مشاريع الشركات المتوسّطة، تفوز آلة واحدة قويّة على عنقود متوسّط الحجم.
الأخطاء الأشيع في مسائلنا
count()بعد كلّ تحويلة: يُعيد كلّ استعلام من الصفر ويحرق ساعات.inferSchema=Trueعلى تيرابايت من CSV: مرور مضاعف يبتلع الوقت بلا فائدة.- التمهيد قبل التقسيم: تسرُّب مضمون، مقاييس متفائلة، انهيار في الإنتاج.
repartitionحيث يكفيcoalesce: خلط شبكيّ لا لزوم له.- إغفال AQE: عدم التوازن يقتل مهمّتك، والحلّ ثابت اسمه
spark.sql.adaptive.enabled=true. overwriteمن دون إصدار: النموذج السابق ضاع، ولا يمكن التراجع.
الامتحان النهائي
يتضمّن الامتحان 40 سؤالًا تشمل الوحدات العشر: تشخيص متى Spark مبالَغ فيه، قراءة خطّة التنفيذ وتمييز التحويلات الواسعة، اختيار الصيغة وتحديد المخطَّط الصريح، إعداد المحوّلات ومنع تسرُّب البيانات، معرفة ما هو غائب في MLlib والبديل الصائب، ضبط الأقسام والخلط بقراءة Spark UI، اختيار أوضاع الكتابة، وحفظ خطّ إنتاج قابل لإعادة التحميل.
عدّة أسئلة تعرض حالات للتشخيص: مَهمّة تستغرق ساعات بلا سبب واضح، مقاييس مثاليّة بلا معنى، OutOfMemoryError رغم أنّ الذاكرة تبدو كافية، نموذج يعيد تحميله ولا يعمل. المُقَيَّم هو الحُكم لا استظهار المعلمات.
وفي حال النجاح تُمنح شهادة الإتمام فورًا؛ ورقمها قابل للتحقّق من أيّ طرف على المنصّة.
راجع الجدول أعلاه واسأل نفسك عن كلّ سطر: «كيف سأرى أنّني مخطئ هنا؟». إن عرفت أن تقول لماذا count() بعد كلّ تحويلة يقتل الأداء، ولماذا Pipeline يمنع التسرُّب، ومتى يفوز LightGBM على آلة واحدة على GBT موزَّع، فأنت مستعدّ. حظًّا موفَّقًا!
الامتحان النهائي
هل أنت مستعدّ لاعتماد هذه الدورة؟
40 سؤالًا تُختار عشوائيًّا من بنك أسئلة الدورة · حدّ النجاح 70 % · شهادة PDF قابلة للتحقّق تُصدَر فورًا عند النجاح.
ابدأ الامتحانيلزم تسجيل الدخول إلى حسابك في InSkillML مع اشتراك نشط. يمكنك أيضًا بدء الامتحان من دوراتي.