انطلق في Scala PySpark Databricks: خطوتك الأولى الملموسة اليوم

سكالا باي سبارك داتابريكس: الأساسيات في مقال واحد — كود حقيقي، مخططات وخطوات ملموسة، مقتطفات من دورة تتكون من 43 درسًا.

انطلق في Scala PySpark Databricks: خطوتك الأولى الملموسة اليوم

أفضل طريقة لتعلم Scala PySpark Databricks هي بالممارسة. يساعدك هذا المقال على البدء مع مقتطفات عملية مستمدة من دورة تتكون من 43 درسًا — ما يكفي للحصول على نتيجة أولى اليوم.

tl;dr
  • مقدمة وتثبيت
  • هندسة Spark
  • RDDs الأساس التاريخي
  • DataFrames و Dataset API
  • Spark SQL
~$ cat ./parcours.md # Scala PySpark Databricks — 10 فصول
01
مقدمة وتثبيت
→ عرض الدورة ولماذا سبارك ؟→ تثبيت سبارك محلياً + JDK + سكالا/بايثون+ 1 دروس أخرى
02
هندسة سبارك
→ السائق، المنفذون ومدير العنقود→ التقسيمات والتوازي+ 2 دروس أخرى
03
RDDs القاعدة التاريخية
→ إنشاء RDDs في سكالا وباي سبارك→ تحويلات RDD (map, filter, reduce)+ 2 دروس أخرى
04
DataFrames و Dataset API
→ قراءة الملفات (CSV, Parquet, JSON)→ المخططات والأنواع والاستدلال+ 2 دروس أخرى
05
Spark SQL
→ createOrReplaceTempView والاستعلامات SQL→ الربط الموزع (broadcast, sort-merge)+ 2 دروس أخرى
06
الأداء والتحسين
→ Catalyst Optimizer وخطة التنفيذ→ التقسيم وإعادة التقسيم وcoalesce+ 2 دروس أخرى
07
Spark Streaming و Structured Streaming
→ Structured Streaming : المفاهيم والواجهة→ القراءة من Kafka والكتابة في Delta Lake+ 1 دروس أخرى
08
Delta Lake و Lakehouse
→ لماذا Delta Lake ومفهوم Lakehouse→ ACID والسفر عبر الزمن وVACUUM+ 1 دروس أخرى
🏁
المشروع النهائي (+ 2 فصول في الطريق)
→ تعود بمشروع ملموس وقابل للعرض

تثبيت Spark محليًا + JDK + Scala/Python

NOTEالهدف — تثبيت بيئة Spark وظيفية على جهازك (JDK، Python، PySpark، واختياريًا Scala) لتشغيل أول مهمة Spark لديك محليًا.

الأهداف التعليمية

TIPعند نهاية هذه الوحدة
  • فهم سبب حاجة Spark إلى JDK (Java Virtual Machine)
  • تثبيت Java وPython وPySpark بشكل صحيح
  • تشغيل SparkSession محليًا والتحقق من التثبيت
  • فهم وضع local[*] مقارنة بمجموعة حقيقية
  • معرفة مكان العثور على Spark UI على جهازك

لماذا يحتاج Spark إلى Java

جوهر Spark مكتوب بلغة Scala ويعمل على JVM (Java Virtual Machine). حتى عند كتابة PySpark بلغة Python، تُترجم أوامرك وتُنفذ بواسطة محرك JVM في الخلفية. لذلك فإن JDK (Java Development Kit) إلزامي، بغض النظر عن لغة العمل الخاصة بك.

NOTEملاحظة: يتطلب Spark 3.5 Java 8 أو 11 أو 17. تجنب الإصدارات الحديثة جدًا (Java 21+) التي لا تكون مدعومة دائمًا. الإصدار 17 خيار ممتاز افتراضيًا في 2026.

الخطوة 1: تثبيت JDK

قم بتنزيل JDK (Temurin/Adoptium مجاني وموثوق)، ثم تحقق:

اللغةنقطة الدخولالتثبيت
PySparkSparkSession في Pythonpip install pyspark
Scalaspark-shell أو sbtتوزيعة Spark + JDK
Databricksدفتر ملاحظات سحابيلا شيء (المتصفح)

Spark UI محليًا

عندما تكون SparkSession نشطة، يعرض Spark واجهة ويب للمراقبة على http://localhost:4040. سترى مهامك والمراحل والأقسام وأوقات التنفيذ. سنستخدمها بشكل مكثف في الفصل 05 لتشخيص الأداء.

NOTEملاحظة: لا يمكن الوصول إلى Spark UI إلا طالما كانت SparkSession تعمل. إذا انتهى البرنامج النصي فورًا، أضف input("Appuyez sur Entrée...") قبل spark.stop() للحصول على وقت لاستكشافه.

الاستيعاب الخام (Bronze) والتنظيف (Silver)

NOTEالهدف — برمجة الطبقتين الأوليين من خط الأنابيب: استيعاب المصادر الخام في Bronze، ثم تنظيف وتصنيف وإزالة التكرارات وربط البيانات في Silver.

الأهداف التعليمية

TIPعند نهاية هذه الوحدة
  • استيعاب CSV وJSON في جداول Bronze Delta
  • إضافة بيانات وصفية للاستيعاب
  • تنظيف التواريخ والمبالغ غير الصالحة
  • إزالة تكرارات المبيعات
  • ربط المبيعات والعملاء في Silver

خطوة Bronze: الاستيعاب كما هو

تنسخ طبقة Bronze المصادر بأمانة، مع إضافة بيانات وصفية تقنية (طابع زمني للاستيعاب، ملف المصدر). لا نقوم بالتنظيف هنا.

دوال النوافذ (RANK, LAG, LEAD)

NOTEالهدف — إتقان دوال النوافذ (window functions) التي تحسب التجميعات والتصنيفات على مجموعات من الصفوف دون تقليلها، وهي ضرورية للتحليلات.

الأهداف التعليمية

TIPعند نهاية هذه الوحدة
  • تعريف نافذة باستخدام partitionBy و orderBy
  • تصنيف الصفوف باستخدام row_number و rank و dense_rank
  • الوصول إلى الصفوف المجاورة باستخدام lag و lead
  • حساب التراكمات والمتوسطات المتحركة
  • التمييز بين دالة نافذة و groupBy

الفرق الرئيسي مع groupBy

groupBy يقلل الصفوف: 1000 عملية بيع مجمعة حسب المدينة تعطي صفًا واحدًا لكل مدينة. أما دالة النافذة فتحتفظ بجميع الصفوف لكنها تضيف عمودًا محسوبًا على مجموعة (النافذة).

NOTEملاحظة: مثال نموذجي: « عرض كل عملية بيع مع ترتيب هذه البيعة في مدينتها ». مستحيل باستخدام groupBy بسيط؛ هذا بالضبط دور دوال النوافذ.

تعريف نافذة

va-plus-loin

يغطي هذا المقال المقتطفات الأكثر فائدة — الدورة الكاملة Scala PySpark Databricks (11 فصلاً، 43 درسًا، تمارين مصححة ومشروع نهائي) تأخذك إلى النهاية.

./الوصول-إلى-الدورة-الكاملة دورة مجانية: إتقان Claude Code

الأسئلة الشائعة

كم من الوقت لتعلم Scala PySpark Databricks؟
مع تقدم منظم (11 فصلاً، 43 درسًا قصيرًا وعمليًا)، يمكن الوصول إلى مستوى تشغيلي في بضعة أسابيع بمعدل 30 إلى 60 دقيقة يوميًا. المهم هو ممارسة كل مفهوم فورًا.
هل هناك متطلبات مسبقة؟
تكفي أساسيات الحوسبة. إذا كنت تعرف استخدام الطرفية وقراءة كود بسيط، فأنت جاهز.
من أين نبدأ عمليًا؟
أعد إنتاج الأوامر في هذا المقال، ثم تابع الدورة الكاملة Scala PySpark Databricks: فهي تربط الـ43 درسًا بالترتيب، مع تمارين ومشروع نهائي.

📬 هل تريد تلقي هذا النوع من الأدلة كل أسبوع؟ اشترك مجانًا — كود حقيقي، بدون كلام فارغ.