إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
الهامه
هذه الميزة في المعاينة العامة.
يسمح تتبع التقدم غير المتزامن لبنية تدفق البنية الأساسية لبرنامج ربط العمليات التجارية بتقدم نقطة التحقق بشكل غير متزامن وبالتوازي مع معالجة البيانات الفعلية داخل دفعة صغيرة، ما يقلل من زمن الانتقال المرتبط بالحفاظ على offsetLog و commitLog.
ملاحظه
لا يعمل تعقب التقدم غير المتزامن مع Trigger.once أو Trigger.availableNow المشغلات. تؤدي محاولة تمكين هذه الميزة باستخدام هذه المشغلات إلى فشل الاستعلام.
كيف يعمل تعقب التقدم غير المتزامن لتقليل زمن الانتقال؟
يعتمد الدفق المنظم على الإزاحات المستمرة وإدارتها كمؤشرات تقدم لمعالجة الاستعلام. تؤثر عملية إدارة الإزاحة مباشرة على زمن انتقال المعالجة، لأنه لا يمكن إجراء أي معالجة للبيانات حتى تكتمل هذه العمليات. يتيح تتبع التقدم غير المتزامن مسارات التدفق المنظم لتقدم نقطة التحقق دون التأثر بعمليات إدارة الإزاحة هذه.
متى يجب تكوين تكرار نقطة التحقق؟
يمكن للمستخدمين تكوين التردد الذي يتم عنده نقاط التحقق من التقدم. توفر الإعدادات الافتراضية لتردد نقطة التحقق معدل نقل جيد لمعظم الاستعلامات. يعد تكوين التردد مفيدا للسيناريوهات التي تحدث فيها عمليات إدارة الإزاحة بمعدل أعلى مما يمكن معالجتها، ما يؤدي إلى تراكم متزايد باستمرار لعمليات إدارة الإزاحة. لإيقاف هذا التراكم المتزايد، يتم حظر معالجة البيانات أو إبطاءها، مما يؤدي بشكل أساسي إلى إرجاع سلوك المعالجة للقضاء على فوائد تتبع التقدم غير المتزامن.
ملاحظه
يزيد وقت استرداد الفشل مع الزيادة في وقت الفاصل الزمني لنقطة التحقق. في حالة الفشل، يجب على البنية الأساسية لبرنامج ربط العمليات التجارية إعادة معالجة جميع البيانات قبل نقطة التحقق الناجحة السابقة. يمكن للمستخدمين التفكير في هذه المفاضلة بين زمن انتقال أقل أثناء المعالجة العادية ووقت الاسترداد في حالة الفشل.
ما هي التكوينات المرتبطة بتعقب التقدم غير المتزامن؟
| الخيار | قيمه | الافتراضي | وصف |
|---|---|---|---|
| asyncProgressTrackingEnabled | صواب/خطأ | كاذبه | تمكين أو تعطيل تعقب التقدم غير المتزامن |
| asyncProgressTrackingCheckpointIntervalMs | ميلي ثانيه | 1000 | الفاصل الزمني الذي نلتزم فيه بالإزاحات وتثبيتات الإكمال |
كيف يمكن للمستخدمين تمكين تتبع التقدم غير المتزامن؟
يمكن للمستخدمين استخدام تعليمات برمجية مشابهة للتعليمات البرمجية أدناه لتمكين هذه الميزة:
val stream = spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "host1:port1,host2:port2")
.option("subscribe", "in")
.load()
val query = stream.writeStream
.format("kafka")
.option("topic", "out")
.option("checkpointLocation", "/tmp/checkpoint")
.option("asyncProgressTrackingEnabled", "true")
.start()
إيقاف تشغيل تعقب التقدم غير المتزامن
عند تمكين تتبع التقدم غير المتزامن، لا يتحقق إطار العمل من التقدم في كل دفعة. لمعالجة ذلك، قبل تعطيل تعقب التقدم غير المتزامن، قم بمعالجة دفعتين صغيرتين على الأقل بالإعدادات التالية:
.option("asyncProgressTrackingEnabled", "true").option("asyncProgressTrackingCheckpointIntervalMs", 0)
أوقف الاستعلام بعد الانتهاء من معالجة دفعتين صغيرتين على الأقل. يمكنك الآن تعطيل تعقب التقدم غير المتزامن بأمان وإعادة تشغيل الاستعلام.
إذا قمت بتعطيل تعقب التقدم غير المتزامن دون إكمال هذه الخطوة، فقد تواجه الخطأ التالي:
java.lang.IllegalStateException: batch x doesn't exist
في سجلات برنامج التشغيل، قد ترى الخطأ التالي:
The offset log for batch x doesn't exist, which is required to restart the query from the latest batch x from the offset log. Please ensure there are two subsequent offset logs available for the latest batch via manually deleting the offset file(s). Please also ensure the latest batch for commit log is equal or one batch earlier than the latest batch for offset log.
يسمح لك اتباع الإرشادات الواردة في هذا القسم لتعطيل تتبع التقدم غير المتزامن بمعالجة هذه الأخطاء وإصلاح حمل عمل الدفق.
القيود المتعلقة بتعقب التقدم غير المتزامن
تحتوي هذه الميزة على القيود التالية:
- يتم دعم تتبع التقدم غير المتزامن فقط في المسارات عديمة الحالة عند استخدام Kafka كمتلقي.
- لا يتم ضمان المعالجة الشاملة مرة واحدة بالضبط مع تتبع التقدم غير المتزامن لأنه يمكن تغيير نطاقات الإزاحة للدفعة في حالة الفشل. بعض المصارف، مثل Kafka، لا توفر أبدا ضمانات لمرة واحدة بالضبط.