PySpark على Azure Databricks
تم إنشاء Azure Databricks فوق Apache Spark، وهو محرك تحليلات موحد للبيانات الضخمة والتعلم الآلي. يساعدك PySpark على الواجهة مع Apache Spark باستخدام لغة برمجة Python، وهي لغة مرنة يسهل تعلمها وتنفيذها وصيانتها. كما يوفر العديد من الخيارات لتصور البيانات في Databricks. يجمع PySpark بين قوة Python وApache Spark.
توفر هذه المقالة نظرة عامة على أساسيات PySpark على Databricks.
من المهم فهم مفاهيم Apache Spark الرئيسية قبل الغوص في استخدام PySpark.
DataFrames هي الكائنات الأساسية في Apache Spark. DataFrame هي مجموعة بيانات منظمة في أعمدة مسماة. يمكنك التفكير في DataFrame مثل جدول بيانات أو جدول SQL، وبنية بيانات ذات بعدين لسلسلة من السجلات (مشابهة للصفوف في جدول) وأعمدة من أنواع مختلفة. توفر DataFrames مجموعة غنية من الوظائف (على سبيل المثال، تحديد الأعمدة والتصفية والانضمام والتجاميع) التي تسمح لك بتنفيذ مهام معالجة البيانات وتحليلها الشائعة بكفاءة.
تتضمن بعض عناصر DataFrame المهمة ما يلي:
- المخطط: يحدد المخطط أسماء الأعمدة وأنواعها في DataFrame. تنسيقات البيانات لها دلالات مختلفة لتعريف المخطط وإنفاذه. توفر بعض مصادر البيانات معلومات المخطط، بينما تعتمد مصادر أخرى إما على تعريف المخطط اليدوي أو تسمح باستنتاج المخطط. يمكن للمستخدمين تعريف المخططات يدويا أو يمكن قراءة المخططات من مصدر بيانات.
- الصفوف: يمثل Spark السجلات في DataFrame ككائنات
Row
. بينما تستخدم تنسيقات البيانات الأساسية مثل Delta Lake الأعمدة لتخزين البيانات، لتحسين ذاكرة التخزين المؤقت ل Spark وخلط البيانات باستخدام الصفوف. - الأعمدة: تشبه الأعمدة في Spark الأعمدة الموجودة في جدول البيانات ويمكن أن تمثل نوعا بسيطا مثل سلسلة أو عدد صحيح، ولكنها أيضا أنواع معقدة مثل الصفيف أو الخريطة أو القيم الخالية. يمكنك كتابة الاستعلامات التي تحدد الأعمدة أو تعالجها أو تزيلها من مصدر بيانات. تتضمن مصادر البيانات المحتملة الجداول أو طرق العرض أو الملفات أو DataFrames الأخرى. لا تتم إزالة الأعمدة أبدا من مجموعة بيانات أو DataFrame، بل يتم حذفها فقط من النتائج من خلال
.drop
التحويلات أو الإغفال فيselect
العبارات.
يستخدم Apache Spark تقييما بطيئا لمعالجة التحويلات والإجراءات المحددة باستخدام DataFrames. هذه المفاهيم أساسية لفهم معالجة البيانات باستخدام Spark.
التحويلات: في Spark، يمكنك التعبير عن منطق المعالجة كتحويلات، وهي إرشادات لتحميل البيانات ومعالجتها باستخدام DataFrames. تتضمن التحويلات الشائعة قراءة البيانات والصلات والتجميعات وصب النوع. للحصول على معلومات حول التحويلات في Azure Databricks، راجع تحويل البيانات.
التقييم البطيء: يحسن Spark معالجة البيانات من خلال تحديد الخطة المادية الأكثر كفاءة لتقييم المنطق المحدد بواسطة التحويلات. ومع ذلك، لا يعمل Spark على التحويلات حتى يتم استدعاء الإجراءات. بدلا من تقييم كل تحويل بالترتيب الدقيق المحدد، ينتظر Spark حتى يقوم إجراء بتشغيل الحساب على جميع التحويلات. يعرف هذا باسم التقييم البطيء، أو التحميل البطيء، والذي يسمح لك بتسلسل عمليات متعددة لأن Spark يعالج تنفيذها بطريقة مؤجلة، بدلا من تنفيذها على الفور عند تعريفها.
ملاحظة
يعني التقييم البطيء أن DataFrames تخزن الاستعلامات المنطقية كم مجموعة من الإرشادات مقابل مصدر بيانات بدلا من نتيجة في الذاكرة. يختلف هذا بشكل كبير عن التنفيذ المتلهف، وهو النموذج المستخدم من قبل Pandas DataFrames.
الإجراءات: ترشد الإجراءات Spark لحساب نتيجة من سلسلة من التحويلات على واحد أو أكثر من DataFrames. ترجع عمليات الإجراء قيمة، ويمكن أن تكون أيا مما يلي:
- إجراءات إخراج البيانات في وحدة التحكم أو المحرر، مثل
display
أوshow
- إجراءات تجميع البيانات (إرجاع
Row
الكائنات)، مثلtake(n)
و وfirst
أوhead
- إجراءات الكتابة إلى مصادر البيانات، مثل
saveAsTable
- التجميعات التي تؤدي إلى حساب، مثل
count
هام
في مسارات بيانات الإنتاج، عادة ما تكون كتابة البيانات هي الإجراء الوحيد الذي يجب أن يكون موجودا. تؤدي جميع الإجراءات الأخرى إلى مقاطعة تحسين الاستعلام ويمكن أن تؤدي إلى اختناقات.
DataFrames هي مجموعة من التحويلات والإجراءات التي يتم تعريفها مقابل مصدر بيانات واحد أو أكثر، ولكن في النهاية يقوم Apache Spark بحل الاستعلامات مرة أخرى إلى مصادر البيانات الأصلية، لذلك لا يتم تغيير البيانات نفسها، ولا يتم تغيير DataFrames. بمعنى آخر، DataFrames غير قابلة للتغيير. ولهذا السبب، بعد إجراء التحويلات، يتم إرجاع DataFrame جديد يجب حفظه في متغير للوصول إليه في العمليات اللاحقة. إذا كنت ترغب في تقييم خطوة متوسطة من التحويل الخاص بك، فقم باستدعاء إجراء.
كما هو الحال مع جميع واجهات برمجة التطبيقات ل Spark، تأتي PySpark مجهزة بالعديد من واجهات برمجة التطبيقات والمكتبات التي تمكن وتدعم الوظائف القوية، بما في ذلك:
- معالجة البيانات المنظمة مع الاستعلامات العلائقية باستخدام Spark SQL وDataFrames. يسمح لك Spark SQL بمزج استعلامات SQL مع برامج Spark. باستخدام Spark DataFrames، يمكنك قراءة البيانات وكتابتها وتحويلها وتحليلها بكفاءة باستخدام Python وSQL، ما يعني أنك تستفيد دائما من القوة الكاملة ل Spark. راجع PySpark Getting Started.
- معالجة قابلة للتطوير للتدفقات باستخدام Structured Streaming. يمكنك التعبير عن حساب البث بنفس الطريقة التي تعبر بها عن حساب دفعي على البيانات الثابتة ويشغله محرك Spark SQL بشكل متزايد ومستمر مع استمرار وصول البيانات المتدفقة. راجع نظرة عامة على الدفق المنظم.
- بنيات بيانات Pandas وأدوات تحليل البيانات التي تعمل على Apache Spark مع واجهة برمجة تطبيقات Pandas على Spark. تتيح لك واجهة برمجة تطبيقات Pandas على Spark توسيع نطاق حمل عمل Pandas الخاص بك إلى أي حجم عن طريق تشغيله الموزع عبر عقد متعددة، مع قاعدة تعليمات برمجية واحدة تعمل مع pandas (الاختبارات ومجموعات البيانات الأصغر) ومع Spark (الإنتاج ومجموعات البيانات الموزعة). راجع واجهة برمجة تطبيقات Pandas على نظرة عامة على Spark.
- خوارزميات التعلم الآلي مع التعلم الآلي (MLLib). MLlib هي مكتبة تعلم آلي قابلة للتطوير مبنية على Spark توفر مجموعة موحدة من واجهات برمجة التطبيقات التي تساعد المستخدمين على إنشاء وضبط مسارات التعلم الآلي العملية. راجع نظرة عامة على مكتبة التعلم الآلي.
- الرسوم البيانية والحساب الموازي للرسم البياني باستخدام GraphX. يقدم GraphX رسما متعددا جديدا موجها مع خصائص مرفقة بكل ذروة وحافة، ويعرض عوامل تشغيل حساب الرسم البياني والخوارزميات والمنشئين لتبسيط مهام تحليلات الرسم البياني. راجع نظرة عامة على GraphX.
للحصول على أمثلة استخدام PySpark على Databricks، راجع المقالات التالية:
تحتوي وثائق Apache Spark أيضا على قوالب تشغيل سريعة وأدلة لتعلم Spark، بما في ذلك ما يلي:
- التشغيل السريع ل PySpark DataFrames
- بدء استخدام Spark SQL
- دليل برمجة الدفق المنظم
- واجهة برمجة تطبيقات Pandas على Spark QuickStart
- دليل برمجة مكتبة التعلم الآلي
تحتفظ Azure Databricks بإصدارها الخاص من واجهات برمجة التطبيقات PySpark والمرجع المقابل، والتي يمكن العثور عليها في هذه الأقسام: