تخطي البيانات ل Delta Lake

إشعار

في Databricks Runtime 13.3 والإصدارات الأحدث، توصي Databricks باستخدام التجميع السائل لتخطيط جدول Delta. التجميع غير متوافق مع ترتيب Z. راجع استخدام التجميع السائل لجداول Delta.

يتم تجميع البيانات التي تتخطى المعلومات تلقائيا عند كتابة البيانات في جدول Delta. يستفيد Delta Lake على Azure Databricks من هذه المعلومات (الحد الأدنى والحد الأقصى للقيم والأعداد الخالية وإجمالي السجلات لكل ملف) في وقت الاستعلام لتوفير استعلامات أسرع.

يجب أن يكون لديك إحصائيات مجمعة للأعمدة المستخدمة في ZORDER العبارات. راجع ما هو Z-ordering؟.

تحديد أعمدة إحصائيات دلتا

بشكل افتراضي، تجمع Delta Lake إحصائيات حول أول 32 عمودا محددا في مخطط الجدول. بالنسبة لهذه المجموعة، يعتبر كل حقل في عمود متداخل عمودا فرديا. يمكنك تعديل هذا السلوك عن طريق تعيين إحدى خصائص الجدول التالية:

خاصية الجدول وقت تشغيل Databricks مدعوم ‏‏الوصف
delta.dataSkippingNumIndexedCols جميع إصدارات وقت تشغيل Databricks المدعومة قم بزيادة أو تقليل عدد الأعمدة التي تجمع دلتا الإحصائيات عليها. يعتمد على ترتيب الأعمدة.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS وما فوق حدد قائمة بأسماء الأعمدة التي تجمع Delta Lake الإحصائيات لها. يحل محل dataSkippingNumIndexedCols.

يمكن تعيين خصائص الجدول عند إنشاء الجدول أو باستخدام ALTER TABLE عبارات. راجع مرجع خصائص جدول Delta.

تحديث هذه الخاصية لا يعيد تلقائيا حساب الإحصائيات للبيانات الموجودة. بدلا من ذلك، فإنه يؤثر على سلوك جمع الإحصائيات المستقبلية عند إضافة البيانات أو تحديثها في الجدول. لا تستفيد Delta Lake من الإحصائيات للأعمدة غير المضمنة في القائمة الحالية لأعمدة الإحصائيات.

في Databricks Runtime 14.3 LTS والإصدارات الأحدث، يمكنك تشغيل إعادة حساب الإحصائيات يدويا لجدول Delta باستخدام الأمر التالي:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

إشعار

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

ما هو Z-ordering؟

إشعار

توصي Databricks باستخدام التجميع السائل لجميع جداول Delta الجديدة. لا يمكنك استخدام ZORDER بالاشتراك مع تكوين أنظمة المجموعات السائلة.

يعد ترتيب Z تقنية لتكوين المعلومات ذات الصلة في نفس مجموعة الملفات. يتم استخدام هذه المنطقة المشتركة تلقائيا بواسطة Delta Lake على خوارزميات تخطي بيانات Azure Databricks. يقلل هذا السلوك بشكل كبير من كمية البيانات التي يحتاج Delta Lake على Azure Databricks إلى قراءتها. إلى بيانات ترتيب Z، يمكنك تحديد الأعمدة التي تريد ترتيبها في ZORDER BY عبارة :

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

إذا كنت تتوقع استخدام عمود بشكل شائع في دالات تقييم الاستعلام وإذا كان هذا العمود يحتوي على علاقة أساسية عالية (أي عدد كبير من القيم المميزة)، فاستخدم ZORDER BY.

يمكنك تحديد أعمدة ZORDER BY متعددة لقائمة مفصولة بفواصل. ومع ذلك، تنخفض فعالية المنطقة مع كل عمود إضافي. سيكون ترتيب Z على الأعمدة التي لا تحتوي على إحصائيات مجمعة عليها غير فعال وإهدار للموارد. وذلك لأن تخطي البيانات يتطلب إحصائيات عمودية محلية مثل الحد الأدنى والحد الأقصى والعدد. يمكنك تكوين مجموعة الإحصائيات على أعمدة معينة عن طريق إعادة ترتيب الأعمدة في المخطط، أو يمكنك زيادة عدد الأعمدة لتجميع الإحصائيات عليها.

إشعار

  • ترتيب Z ليس متكررا ولكنه يهدف إلى أن يكون عملية تزايدية. الوقت الذي يستغرقه ترتيب Z غير مضمون لتقليله عبر عمليات تشغيل متعددة. ومع ذلك، إذا لم تتم إضافة أي بيانات جديدة إلى قسم تم ترتيبه فقط من قبل Z، فلن يكون لترتيب Z آخر لهذا القسم أي تأثير.

  • يهدف ترتيب Z إلى إنتاج ملفات بيانات متوازنة بالتساوي فيما يتعلق بعدد المجموعات، ولكن ليس بالضرورة حجم البيانات على القرص. غالبا ما يكون المقياسان مرتبطين، ولكن يمكن أن تكون هناك حالات لا يحدث فيها ذلك، مما يؤدي إلى انحراف في أوقات المهام الأمثل.

    على سبيل المثال، إذا قمت ZORDER BY بالتاريخ وكانت السجلات الأحدث أوسع بكثير (على سبيل المثال صفائف أطول أو قيم سلسلة) من تلك الموجودة في الماضي، فمن المتوقع أن OPTIMIZE تكون مدد مهمة المهمة منحرفة، بالإضافة إلى أحجام الملفات الناتجة. ومع ذلك، هذه مشكلة فقط للأمر OPTIMIZE نفسه؛ يجب ألا يكون لها أي تأثير سلبي على الاستعلامات اللاحقة.