العمل مع البيانات باستخدام Spark SQL

مكتمل

تعد واجهة برمجة تطبيقات Dataframe جزءاً من مكتبة Spark المسماة Spark SQL، والتي تمكن محللي البيانات من استخدام تعبيرات SQL للاستعلام عن البيانات ومعالجتها.

إنشاء كائنات قاعدة البيانات في كتالوج Spark

كتالوج Spark هو مخزن بيانات تعريفي لكائنات البيانات الارتباطية مثل طرق العرض والجداول. يمكن لوقت تشغيل Spark استخدام الكتالوج لدمج التعليمات البرمجية المكتوبة بأي لغة مدعومة من Spark بسلاسة مع تعبيرات SQL التي قد تكون أكثر طبيعية لبعض محللي البيانات أو المطورين.

تتمثل إحدى أبسط الطرق لتوفير البيانات في إطار بيانات للاستعلام في كتالوج Spark في إنشاء طريقة عرض مؤقتة، كما هو موضح في مثال التعليمات البرمجية التالي:

df.createOrReplaceTempView("products_view")

طريقة العرض مؤقتة، ما يعني أنه يتم حذفها تلقائياً في نهاية جلسة العمل الحالية. يمكنك أيضاً إنشاء جداول ثابتة في الكتالوج لتعريف قاعدة بيانات يمكن الاستعلام فيها باستخدام Spark SQL.

الجداول هي بنيات بيانات التعريف التي تخزن بياناتها الأساسية في موقع التخزين المقترن بالكتالوج. في Microsoft Fabric، يتم تخزين البيانات للجداول المدارة في موقع تخزين الجداول الموضح في مستودع البيانات، ويتم إدراج أي جداول تم إنشاؤها باستخدام Spark هناك.

يمكنك إنشاء جدول فارغ باستخدام spark.catalog.createTable الأسلوب ، أو يمكنك حفظ إطار بيانات كجدول باستخدام أسلوبه saveAsTable . يؤدي حذف جدول مدار أيضا إلى حذف بياناته الأساسية.

على سبيل المثال، تحفظ التعليمات البرمجية التالية إطار بيانات كجدول جديد يسمى products:

df.write.format("delta").saveAsTable("products")

إشعار

يدعم كتالوج Spark الجداول استنادا إلى الملفات بتنسيقات مختلفة. التنسيق المفضل في Microsoft Fabric هو delta، وهو تنسيق تقنية البيانات الارتباطية على Spark المسمى Delta Lake. تدعم جداول دلتا الميزات الشائعة الموجودة في أنظمة قواعد البيانات الارتباطية، بما في ذلك المعاملات وتعيين الإصدار ودعم تدفق البيانات.

بالإضافة إلى ذلك، يمكنك إنشاء جداول خارجية باستخدام spark.catalog.createExternalTable الأسلوب . تحدد الجداول الخارجية بيانات التعريف في الكتالوج ولكن تحصل على بياناتها الأساسية من موقع تخزين خارجي؛ عادة ما يكون مجلدا في منطقة تخزين الملفات في مستودع. لا يؤدي حذف جدول خارجي إلى حذف البيانات الأساسية.

تلميح

يمكنك تطبيق نفس تقنية التقسيم على جداول delta lake كما تمت مناقشتها لملفات parquet في الوحدة السابقة. يمكن أن يؤدي تقسيم الجداول إلى أداء أفضل عند الاستعلام عنها.

استخدام Spark SQL API للاستعلام عن البيانات

يمكنك استخدام Spark SQL API في التعليمات البرمجية المكتوبة بأي لغة للاستعلام عن البيانات في الكتالوج. على سبيل المثال، تستخدم التعليمات البرمجية PySpark التالية استعلام SQL لإرجاع البيانات من جدول المنتجات كإطار بيانات.

bikes_df = spark.sql("SELECT ProductID, ProductName, ListPrice \
                      FROM products \
                      WHERE Category IN ('Mountain Bikes', 'Road Bikes')")
display(bikes_df)

ستبدو النتائج من مثال التعليمات البرمجية مشابهة للجدول التالي:

معرّف المنتج ProductName قائمة الأسعار
771 ماونتن 100 فضي، 38 3399.9900
839 رود-750 أسود، 52 539.9900
... ... ...

استخدام التعليمات البرمجية SQL

يوضح المثال السابق كيفية استخدام Spark SQL API لتضمين تعبيرات SQL في تعليمة Spark البرمجية. في دفتر الملاحظات، يمكنك أيضاً استخدام %%sql السحر لتشغيل التعليمات البرمجية SQL التي تقوم بالاستعلامات عن الكائنات في الكتالوج، مثل هذا:

%%sql

SELECT Category, COUNT(ProductID) AS ProductCount
FROM products
GROUP BY Category
ORDER BY Category

يرجع مثال التعليمات البرمجية SQL مجموعة نتائج يتم عرضها تلقائيا في دفتر الملاحظات كجدول:

الفئة عدد المنتجات
Bib-Shorts 3
رفوف الدراجات 1
مدرجات الدراجة 1
... ...