العمل مع الصلات على Azure Databricks
يدعم Databricks بناء جملة الانضمام القياسي ANSI. توضح هذه المقالة الاختلافات بين الصلات مع معالجة الدفعات والدفق وتوفر بعض التوصيات لتحسين أداء الصلة.
ملاحظة
يدعم Databricks أيضا بناء الجملة القياسي لعوامل تشغيل UNION
المجموعة و INTERSECT
و.EXCEPT
راجع تعيين عوامل التشغيل.
الصلات على Azure Databricks إما ذات حالة أو عديمة الحالة.
جميع الصلات الدفعية هي الصلات عديمة الحالة. تعالج النتائج على الفور وتعكس البيانات في وقت تشغيل الاستعلام. في كل مرة يتم فيها تنفيذ الاستعلام، يتم حساب نتائج جديدة استنادا إلى بيانات المصدر المحددة. راجع عمليات ربط الدفعات.
الصلات بين مصدري بيانات الدفق ذات حالة. في الصلات ذات الحالة، يتعقب Azure Databricks معلومات حول مصادر البيانات والنتائج ويحدث النتائج بشكل متكرر. يمكن أن توفر الصلات ذات الحالة حلولا قوية لمعالجة البيانات عبر الإنترنت، ولكن قد يكون من الصعب تنفيذها بفعالية. لديهم دلالات تشغيلية معقدة اعتمادا على وضع الإخراج والفاصل الزمني للمشغل والعلامة المائية. راجع عمليات ربط دفق البث.
الصلات الثابتة للبث عديمة الحالة، ولكنها توفر خيارا جيدا للانضمام إلى مصدر بيانات تزايدي (مثل جدول الحقائق) بمصدر بيانات ثابت (مثل جدول الأبعاد المتغير ببطء). بدلا من ضم جميع السجلات من كلا الجانبين في كل مرة يتم فيها تنفيذ استعلام، يتم ربط السجلات المستلمة حديثا فقط من مصدر الدفق بالإصدار الحالي من الجدول الثابت. راجع الصلات الثابتة للبث.
يدعم Azure Databricks بناء جملة ربط SQL القياسي، بما في ذلك الصلات الداخلية والخارجية وشبه المضادة والصلات المتقاطعة. راجع JOIN.
ملاحظة
توصي Databricks باستخدام طريقة عرض مجسدة لتحسين الحساب التزايدي لنتائج الصلة الداخلية. راجع استخدام طرق العرض المجسدة في Databricks SQL.
يمكن أن يمثل الانضمام إلى مصدري بيانات دفق تحديات كبيرة في إدارة معلومات الحالة والاستدلال حول حساب النتائج والإخراج. قبل تنفيذ صلة دفق البيانات، توصي Databricks بتطوير فهم قوي للدلالات التشغيلية للتدفق ذي الحالة، بما في ذلك كيفية تأثير العلامات المائية على إدارة الحالة. راجع المقالات التالية:
- ما هو الدفق ذي الحالة؟
- تطبيق العلامات المائية للتحكم في حدود معالجة البيانات
- عمليات ربط Stream-Stream
توصي Databricks بتحديد العلامات المائية لكلا جانبي جميع عمليات ربط دفق البخار. أنواع الصلة التالية مدعومة:
- الصلات الداخلية
- الصلات الخارجية اليسرى
- الصلات الخارجية اليمنى
- الصلات الخارجية الكاملة
- شبه الصلات اليسرى
راجع وثائق Apache Spark Structured Streaming على عمليات ربط دفق البخار.
ملاحظة
يفترض السلوك الموضح للصلات الثابتة الدفق تخزين البيانات الثابتة باستخدام Delta Lake.
صلة دفق ثابتة تنضم إلى أحدث إصدار صالح من جدول Delta (البيانات الثابتة) إلى دفق بيانات باستخدام صلة عديمة الحالة.
عندما يعالج Azure Databricks دفعة صغيرة من البيانات في صلة ثابتة دفق، فإن أحدث إصدار صالح من البيانات من جدول Delta الثابت ينضم مع السجلات الموجودة في الدفعة الصغيرة الحالية. نظرا لأن الصلة عديمة الحالة، لا تحتاج إلى تكوين العلامات المائية ويمكن معالجة النتائج مع زمن انتقال منخفض. يجب أن تتغير البيانات الموجودة في جدول Delta الثابت المستخدم في الصلة ببطء.
يوضح المثال التالي هذا النمط:
streamingDF = spark.readStream.table("orders")
staticDF = spark.read.table("customers")
query = (streamingDF
.join(staticDF, streamingDF.customer_id==staticDF.id, "inner")
.writeStream
.option("checkpointLocation", checkpoint_path)
.table("orders_with_customer_info")
)
تحدد الحوسبة مع تمكين Photon دائما أفضل نوع صلة. راجع ما هو Photon؟.
يوفر استخدام إصدار حديث من Databricks Runtime مع تمكين Photon بشكل عام أداء جيدا للانضمام، ولكن يجب عليك أيضا مراعاة التوصيات التالية:
الصلات المتقاطعة مكلفة للغاية. إزالة الصلات المتقاطعة من أحمال العمل والاستعلامات التي تتطلب زمن انتقال منخفض أو إعادة حساب متكررة.
الانضمام إلى الأمر مهم. عند إجراء عمليات ربط متعددة، قم دائما بضم أصغر الجداول أولا ثم ضم النتيجة بجداول أكبر.
يمكن للمحسن أن يكافح في الاستعلامات مع العديد من الصلات والتجميعات. يمكن أن يؤدي حفظ النتائج المتوسطة إلى تسريع تخطيط الاستعلام ونتائج الحوسبة.
حافظ على إحصائيات جديدة لتحسين الأداء. يمكن لتحسين التنبؤ باستخدام
ANALYZE
(المعاينة العامة) تحديث الإحصائيات وصيانتها تلقائيا. يمكنك أيضا تشغيل الاستعلامANALYZE TABLE table_name COMPUTE STATISTICS
لتحديث الإحصائيات في مخطط الاستعلام.
هام
التحسين التنبؤي مع ANALYZE
هو في المعاينة العامة. وهو يتضمن مجموعة إحصائيات ذكية أثناء عمليات الكتابة. استخدم هذا النموذج للتسجيل في المعاينة العامة.
ملاحظة
في Databricks Runtime 14.3 LTS والإصدارات الأحدث، يمكنك تعديل الأعمدة التي تجمع Delta Lake الإحصائيات عليها لتخطي البيانات ثم إعادة حساب الإحصائيات الموجودة في سجل Delta. راجع تحديد أعمدة إحصائيات دلتا.
يدعم Apache Spark تحديد تلميحات الانضمام لصلات النطاق والصلات المنحرفة. تلميحات الصلات المنحرفة ليست ضرورية لأن Azure Databricks يحسن هذه الصلات تلقائيا. الاطلاع على التلميحات
يمكن أن تكون تلميحات الانضمام إلى النطاق مفيدة إذا كان أداء الانضمام ضعيفا وكنت تقوم بصلات عدم المساواة. تتضمن الأمثلة الانضمام في نطاقات الطابع الزمني أو مجموعة من معرفات التجميع. راجع تحسين الانضمام إلى النطاق.