استكشاف أخطاء تثبيت المكتبة وإصلاحها

لجعل التعليمات البرمجية التابعة لجهة خارجية أو التي تم إنشاؤها محلياً متاحة لتطبيقاتك، يمكنك تثبيت مكتبة على أحد تجمعات Apache Spark بلا خادم. يتم تنزيل الحزم المدرجة في ملف requirements.txt من PyPi في وقت بدء تشغيل التجمع. يتم استخدام ملف المتطلبات هذا في كل مرة يتم فيها إنشاء مثيل Spark من تجمع Spark هذا. بمجرد تثبيت مكتبة لتجمع Spark، تكون متاحة لجميع جلسات العمل باستخدام نفس التجمع.

في بعض الحالات، قد تجد أن مكتبة لا تظهر في تجمع Apache Spark. غالباً ما تحدث هذه الحالة عند وجود خطأ في requirements.txt المتوفرة أو المكتبات المحددة. عند حدوث خطأ في عملية تثبيت المكتبة، سيعود تجمع Apache Spark إلى المكتبات المحددة في وقت تشغيل قاعدة Synapse.

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

فرض تحديث تجمع Apache Spark

عند تحديث المكتبات في تجمع Apache Spark، سيتم التقاط هذه التغييرات بمجرد إعادة تشغيل التجمع. إذا كانت لديك وظائف نشطة، فستستمر هذه المهام في العمل على الإصدار الأصلي من تجمع spark.

يمكنك فرض تطبيق التغييرات عن طريق تحديد الخيار فرض إعدادات جديدة. سيؤدي هذا الإعداد إلى إنهاء جميع جلسات العمل الحالية لتجمع Spark المحدد. بمجرد انتهاء الجلسات، سيتعين عليك انتظار إعادة تشغيل التجمع.

إضافة مكتبات Python

تعقب تقدم التثبيت

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

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

لعرض هذه السجلات:

  1. انتقل إلى قائمة تطبيقات Spark في علامة التبويب مراقبة.
  2. حدد مهمة تطبيق Spark للنظام التي تتوافق مع تحديث التجمع الخاص بك. تعمل مهام النظام هذه ضمن عنوان SystemReservedJob-LibraryManagement. لقطة شاشة توضح وظيفة المكتبة المحجوزة للنظام.
  3. قم بالتبديل لعرض سجلات برنامج تشغيل الجهاز وstdout.
  4. ستظهر ضمن النتائج السجلات المتعلقة بتثبيت الحزم لديك. لقطة شاشة توضح نتائج وظائف المكتبة المحجوزة للنظام.

تعقب حالات فشل التثبيت

في بعض الحالات، يمكن للمستخدمين أيضا فحص سجلات التثبيت الكاملة المتوفرة في خادم محفوظات Spark لتحديد تعارضات التبعية المعقدة. يمكن اقتطاع السجلات المتوفرة من خلال واجهة مستخدم Spark وسيكون الوصول إلى سجلات التثبيت الكاملة من خلال خادم محفوظات Spark مفيدا في سيناريوهات تثبيت المكتبة المعقدة.

لعرض سجلات التثبيت الكاملة:

  1. انتقل إلى قائمة تطبيقات Spark في علامة التبويب مراقبة.
  2. حدد مهمة تطبيق Spark للنظام التي تتوافق مع تحديث التجمع الفاشل. تعمل مهام النظام هذه ضمن عنوان SystemReservedJob-LibraryManagement. لقطة شاشة تميز وظيفة المكتبة المحجوزة للنظام الفاشلة.
  3. حدد خيار خادم محفوظات Spark المميز والذي سيفتح صفحة تفاصيل خادم محفوظات Spark في علامة تبويب جديدة. لقطة شاشة توضح تميز وظيفة المكتبة المحجوزة للنظام الفاشلة.
  4. في هذه الصفحة، سترى محاولتين، حدد المحاولة 1 كما هو موضح أدناه. لقطة شاشة تبرز تفاصيل المنفذ في صفحة خادم محفوظات spark لوظيفة مكتبة النظام المحجوزة الفاشلة
  5. في شريط التنقل العلوي في صفحة خادم محفوظات Spark، قم بالتبديل إلى علامة التبويب المنفذون. لقطة شاشة تبرز تفاصيل المهمة في صفحة خادم محفوظات spark لوظيفة مكتبة النظام المحجوزة الفاشلة.
  6. قم بتنزيل ملفات سجل stdoutوstderr للوصول إلى مخرجات إدارة المكتبة الكاملة وسجلات الأخطاء. لقطة شاشة تبرز صفحة خادم محفوظات spark لوظيفة مكتبة النظام المحجوزة الفاشلة

التحقق من صحة أذوناتك

لتثبيت المكتبات وتحديثها، يجب أن يكون لديك أذونات المساهم لبيانات Storage Blob أو المالك لبيانات Storage Blob على حساب تخزين Azure Data Lake Storage Gen2 الأساسي المرتبط بمساحة عمل Azure Synapse Analytics.

للتحقق من أن لديك هذه الأذونات، يمكنك تشغيل التعليمات البرمجية التالية:

from pyspark.sql.types import StructType,StructField, StringType, IntegerType
data2 = [("James","Smith","Joe","4355","M",3000),
    ("Michael","Rose","Edward","40288","F",4000)
  ]

schema = StructType([ \
    StructField("firstname",StringType(),True), \
    StructField("middlename",StringType(),True), \
    StructField("lastname",StringType(),True), \
    StructField("id", StringType(), True), \
    StructField("gender", StringType(), True), \
    StructField("salary", IntegerType(), True) \
  ])
 
df = spark.createDataFrame(data=data2,schema=schema)

df.write.csv("abfss://<<ENTER NAME OF FILE SYSTEM>>@<<ENTER NAME OF PRIMARY STORAGE ACCOUNT>>.dfs.core.windows.net/validate_permissions.csv")

إذا تلقيت خطأ، من المحتمل أن تفتقد الأذونات المطلوبة. لمعرفة كيفية الحصول على الأذونات المطلوبة، تفضل بزيارة هذا المستند: تعيين أذونات مساهم البيانات في Storage Blob أو مالك البيانات في Storage Blob.

بالإضافة إلى ذلك، إذا كنت تقوم بتشغيل مسار، يجب أن يكون لدى Workspace MSI أذونات مالك بيانات Storage Blob أو مساهم بيانات Storage Blob أيضاً. لمعرفة كيفية منح هوية مساحة العمل هذا الإذن، تفضل بزيارة: منح أذونات للهوية المدارة لمساحة العمل.

تحقق من ملف تكوين البيئة

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

من المهم ملاحظة القيود التالية:

  • يجب ألا تشتمل محتويات ملف المتطلبات على أسطر أو أحرف فارغة إضافية.
  • يتضمن وقت تشغيل Synapse مجموعة من المكتبات المثبتة مسبقاً على كل تجمع Apache Spark بلا خادم. لا يمكن إزالة الحزم التي تأتي مثبتة مسبقاً على وقت التشغيل الأساسي أو إلغاء تثبيتها.
  • تغيير إصدار PySpark أو Python أو Scala/Java أو ‎.NET أو Spark غير مدعوم.
  • تقبل المكتبات ذات نطاق جلسة عمل Python الملفات ذات ملحق YML فقط.

التحقق من صحة ملفات العجلة

تستند تجمعات Apache Spark بلا خادم Synapse إلى توزيع Linux. عند تنزيل ملفات العجلة وتثبيتها مباشرة من PyPI، تأكد من تحديد الإصدار الذي تم إنشاؤه على Linux ويعمل على نفس إصدار Python مثل تجمع Spark.

هام

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

التحقق من تعارضات التبعية

بشكل عام، يمكن أن يكون تحليل تبعية Python صعب الإدارة. للمساعدة في تصحيح تعارضات التبعية محلياً، يمكنك إنشاء بيئتك الظاهرية استنادًا إلى وقت تشغيل Synapse والتحقق من صحة التغييرات.

لإعادة إنشاء البيئة والتحقق من صحة التحديثات:

  1. قم بتنزيل القالب لإعادة إنشاء وقت تشغيل Synapse محلياً. قد تكون هناك اختلافات طفيفة بين القالب وبيئة Synapse الفعلية.

  2. إنشاء بيئة ظاهرية باستخدام الإرشادات التالية. تسمح لك هذه البيئة بإنشاء تثبيت Python معزول بقائمة محددة من المكتبات.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. استخدم pip install -r <provide your req.txt file> لتحديث البيئة الظاهرية مع الحزم المحددة. إذا كان التثبيت ينتج خطأ، فقد يكون هناك تعارض بين ما تم تثبيته مسبقاً في وقت التشغيل الأساسي Synapse وما هو محدد في ملف المتطلبات المتوفرة. يجب حل تعارضات التبعية هذه للحصول على المكتبات المحدثة على تجمع Apache Spark بلا خادم.

هام

قد يتم سرد المشكلات عند استخدام pip وconda معاً. عند الجمع بين pip وconda، من الأفضل اتباع أفضل ممارسة موصى بها.

الخطوات التالية