تكوين أداة التحميل التلقائي لأحمال عمل الإنتاج

توصي Databricks باتباع أفضل ممارسات الدفق لتشغيل "المحمل التلقائي" في الإنتاج.

توصي Databricks باستخدام أداة التحميل التلقائي في Delta Live Tables لاستيعاب البيانات المتزايدة. توسع Delta Live Tables الوظائف في Apache Spark Structured Streaming وتسمح لك بكتابة بضعة أسطر فقط من Python أو SQL التعريفية لنشر مسار بيانات بجودة الإنتاج باستخدام:

مراقبة التحميل التلقائي

الاستعلام عن الملفات التي اكتشفها "المحمل التلقائي"

إشعار

cloud_files_state تتوفر الدالة في Databricks Runtime 11.3 LTS وما فوق.

يوفر التحميل التلقائي واجهة برمجة تطبيقات SQL لفحص حالة الدفق. باستخدام الدالة cloud_files_state ، يمكنك العثور على بيانات التعريف حول الملفات التي تم اكتشافها بواسطة دفق التحميل التلقائي. ما عليك سوى الاستعلام من cloud_files_state، وتوفير موقع نقطة التحقق المقترنة بتدفق أداة التحميل التلقائي.

SELECT * FROM cloud_files_state('path/to/checkpoint');

الاستماع إلى تحديثات الدفق

لمراقبة تدفقات التحميل التلقائي بشكل أكبر، توصي Databricks باستخدام واجهة مستمع الاستعلام المتدفق من Apache Spark.

يقوم برنامج التحميل التلقائي بالإبلاغ عن المقاييس إلى مستمع استعلام البث في كل دفعة. يمكنك عرض عدد الملفات الموجودة في التراكم ومقدار التراكم في numFilesOutstanding و numBytesOutstanding المقاييس ضمن علامة التبويب البيانات الأولية في لوحة معلومات تقدم الاستعلام المتدفق:

{
  "sources" : [
    {
      "description" : "CloudFilesSource[/path/to/source]",
      "metrics" : {
        "numFilesOutstanding" : "238",
        "numBytesOutstanding" : "163939124006"
      }
    }
  ]
}

في Databricks Runtime 10.4 LTS وما فوق، عند استخدام وضع إعلام الملف، ستتضمن المقاييس أيضا العدد التقريبي لأحداث الملفات الموجودة في قائمة انتظار السحابة بالنسبة approximateQueueSize إلى AWS وAzure.

اعتبارات التكلفة

عند تشغيل المحمل التلقائي، سيكون المصدر الرئيسي للتكاليف هو تكلفة موارد الحوسبة واكتشاف الملفات.

لتقليل تكاليف الحوسبة، توصي Databricks باستخدام وظائف Databricks لجدولة أداة التحميل التلقائي كوظائف دفعية باستخدام Trigger.AvailableNow بدلا من تشغيلها بشكل مستمر طالما لم تكن لديك متطلبات زمن انتقال منخفضة. راجع تكوين فواصل مشغل Structured Streaming.

يمكن أن تأتي تكاليف اكتشاف الملفات في شكل عمليات LIST على حسابات التخزين الخاصة بك في وضع سرد الدليل وطلبات واجهة برمجة التطبيقات على خدمة الاشتراك وخدمة قائمة الانتظار في وضع إعلام الملف. لتقليل تكاليف اكتشاف الملفات، توصي Databricks بما يلي:

  • ProcessingTime توفير مشغل عند تشغيل "التحميل التلقائي" بشكل مستمر في وضع سرد الدليل
  • تصميم تحميلات الملفات إلى حساب التخزين الخاص بك بترتيب معجمي للاستفادة من القائمة التزايدية (مهملة) عندما يكون ذلك ممكنا
  • الاستفادة من إعلامات الملفات عندما لا يكون الإدراج التزايدي ممكنا
  • استخدام علامات الموارد لوضع علامة على الموارد التي تم إنشاؤها بواسطة "المحمل التلقائي" لتتبع التكاليف

استخدام Trigger.AvailableNow وتحديد المعدل

إشعار

متوفر في Databricks Runtime 10.4 LTS وما فوق.

يمكن جدولة التحميل التلقائي للتشغيل في وظائف Databricks كوظيفة دفعية باستخدام Trigger.AvailableNow. AvailableNow سيوجه المشغل "المحمل التلقائي" لمعالجة جميع الملفات التي وصلت قبل وقت بدء الاستعلام. يتم تجاهل الملفات الجديدة التي يتم تحميلها بعد بدء الدفق حتى المشغل التالي.

مع Trigger.AvailableNow، يحدث اكتشاف الملفات بشكل غير متزامن مع معالجة البيانات ويمكن معالجة البيانات عبر دفعات صغيرة متعددة مع تحديد المعدل. يقوم "التحميل التلقائي" بشكل افتراضي بمعالجة 1000 ملف كحد أقصى كل دفعة صغيرة. يمكنك تكوين cloudFiles.maxFilesPerTrigger وتكوين cloudFiles.maxBytesPerTrigger عدد الملفات أو عدد وحدات البايت التي يجب معالجتها في دفعة صغيرة. حد الملف هو حد ثابت ولكن حد البايت هو حد بسيط، ما يعني أنه يمكن معالجة وحدات بايت أكثر من المتوفرة maxBytesPerTrigger. عند توفير كلا الخيارين معا، يعالج برنامج التحميل التلقائي العديد من الملفات المطلوبة للضغط على أحد الحدود.

استبقاء الحدث

يتعقب برنامج التحميل التلقائي الملفات المكتشفة في موقع نقطة التحقق باستخدام RocksDB لتوفير ضمانات الاستيعاب مرة واحدة بالضبط. توصي Databricks بشدة باستخدام cloudFiles.maxFileAge الخيار لجميع تدفقات الاستيعاب عالية الحجم أو طويلة الأمد. تنتهي صلاحية هذا الخيار الأحداث من موقع نقطة التحقق، مما يؤدي إلى تسريع وقت بدء تشغيل التحميل التلقائي. يمكن أن ينمو وقت بدء التشغيل إلى الدقائق لكل تشغيل أداة تحميل تلقائي، مما يضيف تكلفة غير ضرورية عندما يكون لديك حد أعلى على العمر الأقصى للملفات التي سيتم تخزينها في الدليل المصدر. الحد الأدنى للقيمة التي يمكنك تعيينها cloudFiles.maxFileAge هو "14 days". تظهر عمليات الحذف في RocksDB كإدخالات علامة الحذف، لذلك يجب أن تتوقع زيادة استخدام التخزين مؤقتا مع انتهاء صلاحية الأحداث قبل أن تبدأ في التسوية.

تحذير

cloudFiles.maxFileAge يتم توفيرها كآلية للتحكم في التكلفة لمجموعات البيانات ذات الحجم الكبير. يمكن أن يتسبب الضبط cloudFiles.maxFileAge بقوة كبيرة في حدوث مشكلات في جودة البيانات مثل الاستيعاب المكرر أو الملفات المفقودة. لذلك، توصي Databricks بإعداد متحفظ ل cloudFiles.maxFileAge، مثل 90 يوما، وهو مشابه لما توصي به حلول استيعاب البيانات القابلة للمقارنة.

يمكن أن تؤدي محاولة ضبط cloudFiles.maxFileAge الخيار إلى تجاهل الملفات غير المعالجة بواسطة "المحمل التلقائي" أو انتهاء صلاحية الملفات المعالجة بالفعل ثم إعادة معالجتها مما يتسبب في تكرار البيانات. فيما يلي بعض الأشياء التي يجب مراعاتها عند اختيار cloudFiles.maxFileAge:

  • إذا تمت إعادة تشغيل الدفق بعد فترة طويلة، يتم تجاهل أحداث إعلام الملف التي يتم سحبها من قائمة الانتظار الأقدم من cloudFiles.maxFileAge . وبالمثل، إذا كنت تستخدم إدخال قائمة الدليل، يتم تجاهل الملفات التي قد تكون ظهرت أثناء وقت التعطل الأقدم من cloudFiles.maxFileAge .
  • إذا كنت تستخدم وضع سرد الدليل وتستخدم cloudFiles.maxFileAge، على سبيل المثال تعيين إلى "1 month"، يمكنك إيقاف الدفق وإعادة تشغيل الدفق مع cloudFiles.maxFileAge تعيين إلى "2 months"، تتم إعادة معالجة الملفات الأقدم من شهر، ولكن تتم إعادة معالجة أحدث من شهرين.

إذا قمت بتعيين هذا الخيار في المرة الأولى التي تبدأ فيها الدفق، فلن يتم استيعاب البيانات الأقدم من cloudFiles.maxFileAge، وبالتالي، إذا كنت تريد استيعاب البيانات القديمة، فلا يجب عليك تعيين هذا الخيار عند بدء الدفق للمرة الأولى. ومع ذلك، يجب تعيين هذا الخيار على عمليات التشغيل اللاحقة.

تشغيل ملفات التصفية العادية باستخدام cloudFiles.backfillInterval

يمكن لأداة التحميل التلقائي تشغيل ملفات التصفية غير المتزامنة في فاصل زمني معين، على سبيل المثال يوم واحد لرد الملء مرة واحدة في اليوم، أو أسبوع واحد لملء الملفات مرة واحدة في الأسبوع. لا تضمن أنظمة إعلام حدث الملفات تسليما بنسبة 100٪ لجميع الملفات التي تم تحميلها ولا توفر اتفاقيات مستوى الخدمة الصارمة على زمن انتقال أحداث الملفات. توصي Databricks بتشغيل ملفات الملفات الاحتياطية العادية باستخدام "المحمل التلقائي" باستخدام cloudFiles.backfillInterval الخيار لضمان اكتشاف جميع الملفات داخل اتفاقية مستوى الخدمة (SLA) معينة إذا كان اكتمال البيانات أحد المتطلبات. لا يؤدي تشغيل ملفات التصفية العادية إلى تكرارات.