تفسير رموز الخطأ في Synapse Analytics

هناك العديد من العوامل التي يمكن أن تلعب دورًا في سبب فشل تطبيق spark في Azure Synapse Analytics اليوم. على سبيل المثال، يمكن أن يكون ذلك بسبب خطأ في النظام أو حتى خطأ متعلق بالمستخدم. في السابق، ظهرت جميع الأخطاء المقابلة للوظائف الفاشلة على Synapse Analytics مع رمز خطأ عام يعرض LIVY_JOB_STATE_DEAD. لم يقدم رمز الخطأ هذا مزيدًا من التفاصيل حول سبب فشل الوظيفة. يتطلب الأمر جهدًا كبيرًا لتحديد السبب الجذري من خلال التعمق في برنامج التشغيل والمُنفذ وحدث Spark وسجلات Livy وإيجاد حل.

لقطة شاشة لرمز خطأ Apache Spark بدون رسالة مفصلة.

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

لقطة شاشة لرمز خطأ Apache Spark مع رسالة مفصلة.

تمكين تصنيف الأخطاء في Synapse

يمكن تمكين ميزة تصنيف الأخطاء أو تعطيلها عن طريق إعداد تكوين Spark التالي إلى true أو false على مستوى الوظيفة أو التجمع:

livy.rsc.synapse.error-classification.enabled

يسرد القسم التالي بعض أنواع الأخطاء المدعومة حاليًا. نحن نعمل باستمرار على تحسين وإضافة المزيد إلى رموز الخطأ هذه عن طريق تحسين نموذجنا.

فئات رمز الخطأ

يقع كل رمز خطأ ضمن أحد المستودعات الأربعة التالية:

  1. المستخدم - يشير إلى خطأ مستخدم
  2. النظام - يشير إلى خطأ في النظام
  3. غامض - قد يكون خطأ في المستخدم أو النظام
  4. غير معروف - لا يوجد تصنيف حتى الآن، على الأرجح لأن نوع الخطأ غير مضمن في النموذج

أمثلة على رمز الخطأ لكل نوع تصنيف

Spark_User_TypeError_TypeNotIterable

في Python، يحدث الخطأ TypeError: argument of type 'insert type' is not iterable عند استخدام عامل تشغيل العضوية (in, not in) للتحقق من صحة عضوية قيمة في عناصر غير قابلة للتكرار مثل القائمة، المجموعة، القاموس. ويرجع ذلك عادة إلى البحث عن قيمة في عنصر غير قابل للتكرار. الحلول الممكنة:

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

Spark_System_ABFS_OperationFailed

فشلت عملية مع ADLS Gen2.

يحدث هذا الخطأ عادة بسبب مشكلة في الأذونات.

تأكد من أن لجميع موارد ADLS Gen2 المشار إليها في وظيفة Spark، دور RBAC "مساهم بيانات Storage Blob" على حسابات التخزين التي يُتوقع أن تقرأها الوظيفة وتكتب منها. تحقق من سجلات تطبيق Spark هذا. انتقل إلى Synapse Studio، وحدد علامة التبويب مراقبة من الجزء الأيسر. من قسم الأنشطة، حدد تطبيقات Apache Spark وابحث عن وظيفة Spark من القائمة. بالنسبة إلى اسم حساب تخزين ADLS Gen2 الذي يواجه هذه المشكلة، افحص السجلات المتوفرة في علامة التبويب السجلات في الجزء السفلي من هذه الصفحة.

Spark_Ambiguous_ClassLoader_NoClassDefFound

تعذر العثور على فئة مطلوبة بواسطة التعليمات البرمجية عند تشغيل البرنامج النصي.

يرجى الرجوع إلى الصفحات التالية للحصول على وثائق إدارة الحزم:

لسيناريوهات Notebook: إدارة Apache Spark لحزم الوظائف التفاعلية

بالنسبة لسيناريوهات دفعة Spark (راجع القسم 6): إدارة Apache Spark لحزم الوظائف⁧ الدفعية

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

Spark_Unknown_Unknown_java.lang.Exception

فشل غير معروف، لم يتمكن النموذج من التصنيف.

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

ملاحظة

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