تحسين الأداء باستخدام التخزين المؤقت على Azure Databricks

يستخدم Azure Databricks التخزين المؤقت للقرص لتسريع قراءات البيانات عن طريق إنشاء نسخ من ملفات بيانات Parquet البعيدة في التخزين المحلي للعقد باستخدام تنسيق بيانات وسيط سريع. يتم تخزين البيانات مؤقتا تلقائيا كلما كان من الضروري إحضار ملف من موقع بعيد. ثم يتم إجراء قراءات متتالية لنفس البيانات محليا، مما يؤدي إلى تحسين سرعة القراءة بشكل كبير. تعمل ذاكرة التخزين المؤقت لجميع ملفات بيانات Parquet (بما في ذلك جداول Delta Lake).

إشعار

في مستودعات SQL وDatabricks Runtime 14.2 وما فوق، CACHE SELECT يتم تجاهل الأمر. يتم استخدام خوارزمية تخزين مؤقت محسنة للقرص بدلا من ذلك.

تمت إعادة تسمية ذاكرة التخزين المؤقت دلتا إلى ذاكرة التخزين المؤقت للقرص

كان يشار سابقا إلى التخزين المؤقت للقرص على Azure Databricks باسم ذاكرة التخزين المؤقت دلتا وذاكرة التخزين المؤقت DBIO. سلوك التخزين المؤقت للقرص هو ميزة خاصة في Azure Databricks. يسعى تغيير الاسم هذا إلى حل الارتباك الذي كان جزءا من بروتوكول Delta Lake.

ذاكرة التخزين المؤقت للقرص مقابل ذاكرة التخزين المؤقت Spark

تختلف ذاكرة التخزين المؤقت لقرص Azure Databricks عن التخزين المؤقت ل Apache Spark. توصي Azure Databricks باستخدام التخزين المؤقت التلقائي للقرص.

يلخص الجدول التالي الاختلافات الرئيسية بين القرص والتخزين المؤقت Apache Spark بحيث يمكنك اختيار أفضل أداة لسير العمل الخاص بك:

ميزة ذاكرة التخزين المؤقت للقرص ذاكرة التخزين المؤقت ل Apache Spark
مخزن ك الملفات المحلية على عقدة عاملة. كتل في الذاكرة، ولكنها تعتمد على مستوى التخزين.
مطبّق على أي جدول Parquet مخزن على ABFS وأنظمة الملفات الأخرى. أي DataFrame أو RDD.
مشغّلة تلقائيا، في القراءة الأولى (إذا تم تمكين ذاكرة التخزين المؤقت). يتطلب تغييرات التعليمات البرمجية يدويا.
تقييم تكاسل. تكاسل.
التوافر يمكن تمكينه أو تعطيله باستخدام علامات التكوين، مع تمكينه افتراضيا على أنواع معينة من العقد. متوفر دائما.
طرد تلقائيا بطريقة LRU أو على أي تغيير في الملف، يدويا عند إعادة تشغيل نظام مجموعة. تلقائيا بطريقة LRU، يدويا باستخدام unpersist.

تناسق ذاكرة التخزين المؤقت للقرص

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

تحديد أنواع المثيلات لاستخدام التخزين المؤقت للقرص

الطريقة الموصى بها (والأسهل) لاستخدام التخزين المؤقت للقرص هي اختيار نوع عامل مع وحدات تخزين SSD عند تكوين نظام المجموعة. يتم تمكين هؤلاء العمال وتكوينهم للتخزين المؤقت للقرص.

يتم تكوين ذاكرة التخزين المؤقت للقرص لاستخدام نصف المساحة المتوفرة على محركات الأقراص الثابتة المحلية المتوفرة مع العقد العاملة. للحصول على خيارات التكوين، راجع تكوين ذاكرة التخزين المؤقت للقرص.

تكوين ذاكرة التخزين المؤقت للقرص

توصي Azure Databricks باختيار أنواع مثيلات العامل المتسارعة لذاكرة التخزين المؤقت لحسابك. يتم تكوين مثل هذه المثيلات تلقائيا على النحو الأمثل لذاكرة التخزين المؤقت للقرص.

إشعار

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

تكوين استخدام القرص

لتكوين كيفية استخدام ذاكرة التخزين المؤقت للقرص للتخزين المحلي للعقد العاملة، حدد إعدادات تكوين Spark التالية أثناء إنشاء نظام المجموعة:

  • spark.databricks.io.cache.maxDiskUsage: مساحة القرص لكل عقدة محجوزة للبيانات المخزنة مؤقتا بالبايت
  • spark.databricks.io.cache.maxMetaDataCache: مساحة القرص لكل عقدة محجوزة لبيانات التعريف المخزنة مؤقتا بالبايت
  • spark.databricks.io.cache.compression.enabled: يجب تخزين البيانات المخزنة مؤقتا بتنسيق مضغوط

مثال على التكوين:

spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false

تمكين ذاكرة التخزين المؤقت للقرص أو تعطيلها

لتمكين وتعطيل ذاكرة التخزين المؤقت للقرص، قم بتشغيل:

spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")

لا يؤدي تعطيل ذاكرة التخزين المؤقت إلى إسقاط البيانات الموجودة بالفعل في التخزين المحلي. بدلا من ذلك، يمنع الاستعلامات من إضافة بيانات جديدة إلى ذاكرة التخزين المؤقت وقراءة البيانات من ذاكرة التخزين المؤقت.