محتويات الدورة

Apache Spark / المتوسط: التوزيع وأدلة التنفيذ / الدرس 11

الحفظ وسلسلة الاشتقاق وحدود إعادة المحاولة

أعد استخدام العمل الحتمي المكلف دون خلط التخزين المؤقت ونقطة التحقق والنشر الدائم.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اختر الحفظ وفق إعادة الاستخدام الفعلية وكلفة الذاكرة.
  • اشرح إعادة الحساب ونقاط التحقق وتكرار آثار المهام.

خزّن مؤقتاً نتيجة مقصودة لإعادة الاستخدام

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

يختلف طلب الحفظ عن امتلاء تخزينه

يضع persist علامة لإعادة الاستخدام، بينما يقيّم فعل البيانات وقد يملأ مستوى التخزين المختار. يسمي المقطع MEMORY_AND_DISK اختياراً تعليمياً لا أفضلية عامة. يعيد count نتيجة صغيرة للمشغّل لكنه يقيّم المجتمع المحفوظ وفق الخطة. سجل الأعمدة وصورة المصدر الممثلة. قد يحتاج مستهلك لاحق عملاً إضافياً، وقد يؤدي الإخلاء أوفقد منفذ إلى إعادة حساب. لا تخصص الدورة تخزيناً مؤقتاً ولا تنفذ count أوتقيس فائدته.

python مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
from pyspark import StorageLevel
prepared = accepted.select('reading_id', 'site_id', 'kwh')
prepared.persist(StorageLevel.MEMORY_AND_DISK)
prepared_count = prepared.count()

يفترض accepted موجودة. يوضح حد ملء التخزين، ولم يُملأ تخزين Spark هنا.

حرر التخزين عند انتهاء إعادة الاستخدام

يتنافس التخزين المؤقت مع ذاكرة التنفيذ والبيانات المحتفظ بها الأخرى. قد يزيد حفظ كل وسيط السكب أوالإخلاء أوجمع الذاكرة بدلاً من التحسين. أعد استخدام المجتمع للمستهلكين المقصودين ثم نفذ unpersist عند حد مضبوط. توضح try/finally ملكية التنظيف حتى عند فشل مستهلك؛ ولا تتراجع عن مخرج منشور أوتنهي عملاً آخر. تحقق من تكلفة الحمل كاملة، بما فيها ملء التخزين وتحريره؛ فقد يبالغ توقيت الفعل الثاني الدافئ وحده في فائدة التصميم.

python مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
try:
    energy = prepared.groupBy('site_id').sum('kwh')
    known = prepared.where('kwh IS NOT NULL').count()
finally:
    prepared.unpersist()

count على known فعل، بينما تبقى energy خطة حتى استهلاكها. لا يمثل التنظيف تراجعاً عن مخرج دائم.

تحتاج إعادة الحساب مصدراً ثابتاً ومنطقاً حتمياً

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

قد تكرر المهمة المعادة آثاراً خارجية

قد ينفذ كود المستخدم أكثر من مرة للجزء المنطقي نفسه بسبب الإعادة أوالتنفيذ الاستباقي. لا يجعل التخزين المؤقت إرسال بريد أوخصم حساب أوزيادة عداد خارجي داخل دالة صف تنفيذاً لمرة واحدة. كما أن accumulators ليست نظام محاسبة معاملاتياً عاماً. اجعل التحويلات نقية حيث أمكن، واستخدم بروتوكول نشر أووجهة صريحاً يمنع تكرار الأثر. ويحتاج فشل المشغّل أيضاً مالك تعافٍ على مستوى التطبيق. لا تختبر الدورة فقد منفذ أوكتابة تحقق أوإعادة مهمة أواتصالاً خارجياً؛ تحققها نماذج محلية وصياغة فقط.

الأخطاء الشائعة وإصلاحها

يُعرض التخزين المؤقت كصورة مصدر دائمة

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

يُقاس الفعل الثاني الدافئ وحده

لماذا يحدث؟
حُذفت تكلفة الملء والتنظيف من المقارنة.
كيف تصلحه؟
قِس الحمل المتكرر كاملاً في ظروف متكافئة.
كيف تتجنب تكراره؟
احفظ حدود المدخل والملء والاستخدام في الأدلة.

ترسل دالة صف معادة إشعارات مكررة

لماذا يحدث؟
وُضعت آثار خارجية داخل حساب موزع قابل للإعادة.
كيف تصلحه؟
ضع الآثار خلف وجهة تمنع التكرار أوبروتوكول نشر منسق.
كيف تتجنب تكراره؟
اختبر تكرار التنفيذ ونتائج النشر المجهولة.

اختبر فهمك

1. هل حُسبت energy في مثال التنظيف لمجرد إسناد groupBy.sum؟

اعرض الحل المشروح

لا. تبقى خطة حتى يستهلكها فعل. يقيّم count الطلب الخاص به، ويزيل unpersist طلب الحفظ عند التنظيف. إذا احتاجت energy الاستفادة من التخزين، فاستهلكها ضمن دورة الاستخدام المقصودة وقِس الحمل كاملاً.

2. هل يمنع التخزين المؤقت مهمة معادة من الخصم الخارجي مرتين؟

اعرض الحل المشروح

لا. قد يتكرر التنفيذ وليس المؤقت منسق معاملات للأنظمة الخارجية. افصل الحساب والآثار واحفظ هوية عملية فريدة في بروتوكول الوجهة. طابق المجهول ولا تفترض أن فشل المهمة يعني عدم حدوث كتابة خارجية.

أهم ما تعلمته

  • يبرر الحفظ تكلفته بإعادة استخدام مقاسة.
  • للتخزين المؤقت ونقطة التحقق والنشر معانٍ مختلفة للتعافي.

المراجع الرسمية