إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
إشعار
متوفر في Databricks Runtime 10.4 LTS وما فوق.
تحتفظ نقاط التحقق غير المتزامنة للحالة بضمانات لمرة واحدة بالضبط للاستعلامات المتدفقة ولكن يمكن أن تقلل من زمن الانتقال الإجمالي لبعض أحمال عمل Structured Streaming ذات الحالة الماختناقة في تحديثات الحالة. يتم إنجاز ذلك عن طريق البدء في معالجة الدفعة الصغيرة التالية بمجرد اكتمال حساب الدفعة المصغرة السابقة دون انتظار اكتمال نقاط التفتيش الخاصة بالحالة. يقارن الجدول التالي المقايضات لنقاط التفتيش المتزامنة وغير المتزامنة:
| Characteristic | نقاط التفتيش المتزامنة | نقاط التفتيش غير المتزامنة |
|---|---|---|
| زمن الانتقال | زمن انتقال أعلى لكل دفعة صغيرة. | تقليل زمن الانتقال حيث يمكن أن تتداخل الدفعات الصغيرة. |
| إعادة التشغيل | يجب إعادة تشغيل الاسترداد السريع كدفعة أخيرة فقط. | تأخير إعادة تشغيل أعلى حيث قد يحتاج أكثر من على دفعة صغيرة إلى إعادة التشغيل. |
فيما يلي خصائص مهمة الدفق التي قد تستفيد من نقاط التفتيش غير المتزامنة للحالة:
- تحتوي الوظيفة على عملية واحدة أو أكثر من العمليات ذات الحالة (على سبيل المثال، التجميع، و
flatMapGroupsWithStatemapGroupsWithState، و، وضم دفق البث) - زمن انتقال نقطة التحقق من الحالة هو أحد المساهمين الرئيسيين في زمن انتقال تنفيذ الدفعة الإجمالي. يمكن العثور على هذه المعلومات في أحداث StreamingQueryProgress . يتم العثور على هذه الأحداث في سجلات log4j على برنامج تشغيل Spark أيضا. فيما يلي مثال على تقدم الاستعلام المتدفق وكيفية العثور على تأثير نقطة التحقق للحالة على زمن انتقال تنفيذ الدفعة الإجمالي.
-
{ "id" : "2e3495a2-de2c-4a6a-9a8e-f6d4c4796f19", "runId" : "e36e9d7e-d2b1-4a43-b0b3-e875e767e1fe", "...", "batchId" : 0, "durationMs" : { "...", "triggerExecution" : 547730, "..." }, "stateOperators" : [ { "...", "commitTimeMs" : 3186626, "numShufflePartitions" : 64, "..." }] } تحليل زمن انتقال نقطة التحقق للحالة لحدث تقدم الاستعلام أعلاه
- مدة الدفعة (
durationMs.triggerDuration) حوالي 547 ثانية. - زمن انتقال تثبيت مخزن الحالة (
stateOperations[0].commitTimeMs) حوالي 3186 ثانية. يتم تجميع زمن انتقال الالتزام عبر المهام التي تحتوي على مخزن حالة. في هذه الحالة هناك 64 مهمة من هذا القبيل (stateOperators[0].numShufflePartitions). - استغرقت كل مهمة تحتوي على عامل تشغيل الحالة ما متوسطه 50 ثانية (3186/64) لنقطة التحقق. هذا زمن انتقال إضافي يساهم في مدة الدفعة. بافتراض تشغيل جميع المهام ال 64 بشكل متزامن، ساهمت خطوة نقطة التحقق بنحو 9٪ (50 ثانية / 547 ثانية) من مدة الدفعة. تصبح النسبة المئوية أعلى عندما يكون الحد الأقصى للمهام المتزامنة أقل من 64.
- مدة الدفعة (
-
تمكين نقاط التفتيش غير المتزامنة للحالة
يجب استخدام مخزن الحالة المستند إلى RocksDB لنقاط التفتيش غير المتزامنة للحالة. تعيين التكوينات التالية:
spark.conf.set(
"spark.databricks.streaming.statefulOperator.asyncCheckpoint.enabled",
"true"
)
spark.conf.set(
"spark.sql.streaming.stateStore.providerClass",
"com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
)
القيود والمتطلبات الخاصة بنقاط التفتيش غير المتزامنة
إشعار
يحتوي التحجيم التلقائي للحساب على قيود على تقليص حجم نظام المجموعة لأحمال عمل Structured Streaming. توصي Databricks باستخدام Delta Live Tables مع تغيير الحجم التلقائي المحسن لأحمال العمل المتدفقة. راجع تحسين استخدام نظام المجموعة لخطوط أنابيب Delta Live Tables مع التحجيم التلقائي المحسن.
- أي فشل في نقطة تفتيش غير متزامنة في أي متجر واحد أو أكثر يفشل الاستعلام. في وضع التحقق المتزامن، يتم تنفيذ نقطة التحقق كجزء من المهمة ويعيد Spark محاولة المهمة عدة مرات قبل فشل الاستعلام. هذه الآلية غير موجودة مع نقاط تفتيش الحالة غير المتزامنة. توصي Databricks باستخدام الوظائف المستمرة لإعادة المحاولة التلقائية عند فشل الوظيفة. راجع تشغيل المهام باستمرار.
- تعمل نقاط التفتيش غير المتزامنة بشكل أفضل عندما لا يتم تغيير مواقع مخزن الحالة بين عمليات تنفيذ الدفعات الصغيرة. قد لا يعمل تغيير حجم نظام المجموعة، بالاقتران مع نقاط التحقق غير المتزامنة للحالة، بشكل جيد لأن مثيل مخازن الحالة قد تتم إعادة توزيعه عند إضافة العقد أو حذفها كجزء من حدث تغيير حجم نظام المجموعة.
- يتم دعم نقاط التفتيش غير المتزامنة للحالة فقط في تنفيذ موفر مخزن حالة RocksDB. لا يدعم تنفيذ مخزن الحالة الافتراضي في الذاكرة ذلك.