Spark SQL
الاستعلام عن البيانات
Spark SQL درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.
ما هي Spark SQL؟
تتيح Spark SQL الاستعلام عن البيانات الموزعة باستخدام SQL القياسية أو واجهة DataFrame ذات الأنواع. ويمر كلاهما عبر مُحسِّن Catalyst نفسه، لذلك يكون أداؤهما متطابقًا.
العروض المؤقتة
لتنفيذ SQL على DataFrame، سجّلها كعرض. تجعل createOrReplaceTempView العرض قابلًا للاستعلام باسمه خلال الجلسة الحالية.
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
df.createOrReplaceTempView("people")تنفيذ استعلام SQL
استخدم spark.sql مع سلسلة SQL. وهي تُرجع DataFrame جديدة يمكنك مواصلة تحويلها أو عرضها.
val adults = spark.sql("SELECT name FROM people WHERE age >= 18")
adults.show()DSL الخاصة بـ DataFrame
الاستعلام نفسه باستخدام DSL ذات الأنواع. ويوفر الكائن functions الدالة col وعمليات المقارنة والعديد من التعبيرات المضمنة.
import org.apache.spark.sql.functions._
val adults = df.filter(col("age") >= 18).select("name")تحديد الأعمدة وإعادة تسميتها
حدّد الأعمدة باستخدام select وأعد تسميتها باستخدام as / alias. وتستخدم الأعمدة المحسوبة تعبيرات تعتمد على col.
import org.apache.spark.sql.functions._
df.select(
col("name"),
(col("age") + 1).as("age_next_year")
).show()تصفية الصفوف
تُعد where وfilter مترادفتين. ادمج الشروط باستخدام && و||، واستخدم isNull / isNotNull للتعامل مع البيانات المفقودة.
import org.apache.spark.sql.functions._
df.where(col("age") > 20 && col("name").isNotNull).show()الفرز وتحديد العدد
تفرز orderBy البيانات (استخدم desc للترتيب التنازلي)، بينما يحدّد limit الحد الأقصى لعدد الصفوف المُرجعة.
import org.apache.spark.sql.functions._
df.orderBy(col("age").desc).limit(5).show()الضمّ
صِل DataFrames اثنتين باستخدام مفتاح مع join. حدّد نوع الضم، مثل "inner" أو "left" أو "outer".
val joined = orders.join(customers, Seq("customer_id"), "inner")
joined.show()الدوال المضمنة
توفر حزمة functions مئات الأدوات المساعدة، مثل upper وconcat وwhen وround ودوال التاريخ وغيرها.
import org.apache.spark.sql.functions._
df.withColumn("name_upper", upper(col("name")))
.withColumn("category", when(col("age") >= 30, "senior").otherwise("junior"))
.show()قراءة الجداول وكتابتها
تقرأ Spark SQL وتكتب العديد من التنسيقات. تنسيق Parquet عمودي وفعّال، بينما يحفظ saveAsTable البيانات في مخزن التعريفات.
val data = spark.read.parquet("input.parquet")
data.write.mode("overwrite").parquet("output.parquet")استعلام شبيه بـ SQL في Scala العادية
نظير مستقل: إن الاستعلام عن مجموعة موجودة في الذاكرة باستخدام أساليب المجموعات يحاكي استعلام Spark SQL باستخدام SELECT/WHERE.
object Main {
case class Person(name: String, age: Int)
def main(args: Array[String]): Unit = {
val people = Seq(Person("Alice", 30), Person("Bob", 25))
val adults = people.filter(_.age >= 18).map(_.name)
println(adults.mkString(", "))
}
}تحقق سريع
ما الذي يجب فعله مع DataFrame قبل الاستعلام عنها باستخدام spark.sql("SELECT ...")؟
مراجعة
لقد استعلمت عن البيانات باستخدام Spark SQL:
- تسجيل العروض باستخدام
createOrReplaceTempView - تنفيذ SQL عبر
spark.sqlأو DSL الخاصة بـ DataFrame selectوwhereوorderByوjoin- الدوال المضمنة وعمليات الإدخال والإخراج باستخدام Parquet
التالي: التجميعات.
الأسئلة الشائعة
هل درس «Spark SQL» مجاني؟
نعم — نص درس «Spark SQL» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Scala for Backend Engineering & Functional Programming، انتقل إلى CoddyKit PRO. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.
ماذا ستتعلم في «Spark SQL»؟
الاستعلام عن البيانات تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟
لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «Spark SQL»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟
نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.