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

Apache Spark / الأساسي: أسس علاقية ذات أنواع / الدرس 2

المخططات والأنواع وحدود المصدر

اقرأ بيانات العدادات بعقد أنواع صريح، واحتفظ بالقيم المرفوضة لتشخيصها.

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

أهداف الدرس

  • اختر المخططات وفق معنى القياس.
  • ميّز التحليل وبيانات nullable الوصفية والتحقق من قواعد الأعمال.

يحدد المخطط التفسير لا هجاء الأعمدة فقط

معرّف العداد الذي تبدأ قيمته بأصفار نص، وقد تتطلب الطاقة حساباً عشرياً محدود الدقة، ويحتاج وقت الرصد إلى معنى زمني معلن. قد ينتج استنتاج كل هذه الأنواع من عينة مخططاً مختلفاً عند وصول ملف آخر. تجعل المخططات الصريحة عقد المنتج قابلاً للمراجعة، وقد تتجنب تكرار عمل الاستنتاج. لكن المخطط لا يثبت عدم سلبية الطاقة أو تفرّد المعرّفات أو إبلاغ كل موقع متوقع. افصل بين تحليل الصياغة وتحويل الأنواع والتحقق من قواعد المجال. فقد يُحلَّل ملف بنجاح، مع بقائه ناقصاً أو غير صحيح دلالياً.

صرّح بالعلاقة التعليمية عمداً

يستخدم مثال SQL النوع DECIMAL(10,3) لقيم طاقة عشرية دقيقة ومحدودة، وSTRING للهوية. يحتفظ الحرف العشري بمقصد المقياس، من دون الاعتماد على تمثيل ثنائي عائم. وُضعت قراءة NULL عمداً حتى لا تفترض القواعد اللاحقة اكتمال كل القراءات. هذه علاقة SQL مستقلة توضيحية، ولم ينفذها Spark هنا. إعلان المخطط بيانات تعريف لتفسير القيم؛ وليست أعلام nullable في DataFrame بديلاً عن قيود أعمال محفوظة. تحقق صراحة من الحقول الإلزامية قبل نشر نتيجة منقحة.

sql مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
SELECT * FROM VALUES
 ('0007', CAST(1.250 AS DECIMAL(10,3))),
 ('0008', CAST(NULL AS DECIMAL(10,3)))
AS readings(meter_id, kwh);
الناتج المتوقع
meter_id | kwh
0007     | 1.250
0008     | NULL

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

خيارات التحليل جزء من العقد

يحتاج قارئ CSV قرارات عن الرأس والفاصل والاقتباس والترميز وتنسيق الوقت والسجلات المعيبة. يفترض المقطع جلسة أُجيزت مستقلة ومسار مختبر خيالياً، ولا يصل إلى ملف أثناء التأليف. يمكن أن يكشف FAILFAST مدخلاً معيباً وفق قواعد القارئ، لكن فحوص الأعمال ما زالت تحتاج تقييماً صريحاً. وقد يحتفظ الوضع المتسامح بالمحتوى المعيب أو يحوله إلى NULL بحسب الخيارات والمخطط؛ فإذا استخدمته فاحفظ استراتيجية للسجلات الفاسدة بدلاً من قبول الفقد بصمت. يختلف نجاح محلل JSON عن قبول Spark أنواع الأعمدة المعلنة.

python مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
raw = (spark.read
    .option('header', True)
    .option('mode', 'FAILFAST')
    .schema('meter_id STRING, kwh DECIMAL(10,3)')
    .csv('lab-input/readings.csv'))

هذه خطة قراءة توضيحية فقط. المسار موضع مختبر اصطناعي، ولم يُفتح ملف أو قارئ Spark.

يحتاج التطور قاعدة توافق صريحة

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

احفظ دفتر رفض مع الصفوف النظيفة

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

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

يفقد رمز العداد الأصفار البادئة

لماذا يحدث؟
عومل المعرّف كرقم عند استنتاج المخطط أو التحويل.
كيف تصلحه؟
احتفظ بالهوية كـSTRING، وأصلحها من المصدر المعتمد.
كيف تتجنب تكراره؟
انشر مخططات صريحة وأمثلة للمعرّفات.

تُعامل بيانات nullable كضمان للاكتمال

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

يغير دمج المخطط معنى البيانات بصمت

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

اختبر فهمك

1. هل يثبت تحليل kwh بالنوع DECIMAL أن القيمة غير سالبة؟

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

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

2. لماذا ينبغي أن يحمل تغير مخطط ملف إصداراً؟

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

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

أهم ما تعلمته

  • التحليل ذي النوع وصحة الأعمال فحصان مختلفان.
  • يحتفظ المسار القابل للإصلاح بهوية المصدر وأسباب الرفض.

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