فشل مهمة أباتشي سبارك مع maxResultSize استثناء

مشكلة

فشل مهمة Spark مع maxResultSize استثناء:

org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized
results of XXXX tasks (X.0 GB) is bigger than spark.driver.maxResultSize (X.0 GB)

السبب

يحدث هذا الخطأ لأنه تم تجاوز حد حجم تكوين. ينطبق حد الحجم على إجمالي النتائج المتسلسلة لإجراءات Spark عبر كافة الأقسام. تتضمن إجراءات Spark إجراءات مثل collect() عقدة برنامج التشغيل toPandas() أو حفظ ملف كبير إلى نظام الملفات المحلي لبرنامج التشغيل.

حل

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

إذا لزم الأمر تماما يمكنك تعيين الخاصية spark.driver.maxResultSize إلى قيمة أعلى من <X>g القيمة التي تم الإبلاغ عنها في رسالة الاستثناء في spark.driver.maxResultSizeالكتلة :

spark.driver.maxResultSize <X>g

القيمة الافتراضية هي 4g. للحصول على التفاصيل، راجع خصائص التطبيق

إذا قمت بتعيين حد عالي، يمكن أن تحدث أخطاء نفاد الذاكرة في برنامج التشغيل (اعتمادا على spark.driver.memory و مقدار الحمل الذاكرة للكائنات في JVM). تعيين حد مناسب لمنع أخطاء نفاد الذاكرة.