0Pricing
Scala for Backend Engineering & Functional Programming · درس

RDDs وDataFrames

تجريدات بيانات Spark

RDDs وDataFrames درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.

ما Apache Spark؟

Apache Spark هو محرك موزّع لمعالجة البيانات على نطاق واسع. يقسم البيانات عبر عنقود ويشغّل العمليات بالتوازي. وتُعد Scala لغته الأصلية، مما يوفر واجهة API موجزة وواعية بالأنواع.

RDD

تُعد Resilient Distributed Dataset (RDD) التجريد منخفض المستوى في Spark: مجموعة غير قابلة للتغيير ومقسّمة يمكن معالجتها بالتوازي وإعادة بنائها من سلسلة النسب إذا تعطل أحد العقد.

SparkContext وSparkSession

تدخلون إلى Spark من خلال SparkSession. ينشئ sparkContext كائنات RDD، بينما تنشئ الجلسة نفسها DataFrames وتشغّل SQL.

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder()
  .appName("Demo")
  .master("local[*]")
  .getOrCreate()

إنشاء RDD

أنشئوا RDD عبر توزيع مجموعة محلية بالتوازي أو عبر قراءة ملف. وتعالج مهمة منفصلة كل قسم.

val sc = spark.sparkContext
val numbers = sc.parallelize(Seq(1, 2, 3, 4, 5))
val lines   = sc.textFile("data.txt")

DataFrame

إن DataFrame جدول موزّع ذو أعمدة مسمّاة ومكتوبة النوع، يشبه RDD من الصفوف مضافًا إليه مخطط. ويمكن لمحسّن Catalyst تخطيط استعلامات DataFrame وتحسينها.

إنشاء DataFrame

أنشئوا DataFrames من المجموعات (باستخدام toDF) أو عبر قراءة ملفات مهيكلة مثل CSV أو JSON أو Parquet.

import spark.implicits._

val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
val csv = spark.read.option("header", "true").csv("people.csv")

فحص DataFrame

استخدموا show لطباعة الصفوف، وprintSchema لعرض أنواع الأعمدة، وcount لمعرفة عدد الصفوف.

df.printSchema()
df.show()
println(df.count())

Datasets وأمان الأنواع

إن Dataset هو DataFrame مكتوب النوع: Dataset[T] حيث إن T هو case class. وهو يجمع بين تحسين DataFrame وفحوصات الأنواع وقت الترجمة.

import spark.implicits._

case class Person(name: String, age: Int)
val ds = Seq(Person("Alice", 30)).toDS()

RDD مقابل DataFrame مقابل Dataset

اختاروا بناءً على احتياجاتكم:

  • RDD — تحكم كامل، بلا مخطط، وبلا محسّن
  • DataFrame — مخطط وتحسين Catalyst، مع صفوف غير مكتوبة النوع
  • Dataset — مخطط وتحسين وأمان الأنواع

التحويل بينها

حوّلوا DataFrame إلى RDD باستخدام .rdd، أو حوّلوا RDD من case classes إلى DataFrame باستخدام .toDF. ويمكن أيضًا تحويل Datasets إلى DataFrames باستخدام .toDF.

val rdd = df.rdd          // DataFrame -> RDD[Row]
val back = ds.toDF()      // Dataset -> DataFrame

مجموعة Scala عادية

من الناحية المفاهيمية، يتصرف DataFrame مثل مجموعة Scala، لكنه موزّع. إليكم النظير المحلي المستقل لتكوين صورة أوضح.

object Main {
  case class Person(name: String, age: Int)
  def main(args: Array[String]): Unit = {
    val people = Seq(Person("Alice", 30), Person("Bob", 25))
    people.foreach(p => println(s"${p.name}: ${p.age}"))
  }
}

تحقق سريع

أي تجريد يوفر مخططًا وتحسين Catalyst وأيضًا أمان الأنواع وقت الترجمة؟

مراجعة

لقد تعرّفتم إلى تجريدات البيانات في Spark:

  • SparkSession بوصفها نقطة الدخول
  • RDD — مجموعة موزّعة منخفضة المستوى
  • DataFrame — جدول موزّع ذو مخطط
  • Dataset — DataFrame مكتوب النوع

التالي: التحويلات والإجراءات.

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

هل درس «RDDs وDataFrames» مجاني؟

نعم — نص درس «RDDs وDataFrames» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Scala for Backend Engineering & Functional Programming، انتقل إلى CoddyKit PRO. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.

ماذا ستتعلم في «RDDs وDataFrames»؟

تجريدات بيانات Spark تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟

لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «RDDs وDataFrames»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟

نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. RDDs وDataFrames
  2. التحويلات والإجراءات
  3. Spark SQL
  4. التجميعات
← العودة إلى Scala for Backend Engineering & Functional Programming