استكشاف أخطاء الإدخال وإصلاحها

توضح هذه المقالة المشكلات الشائعة في اتصالات إدخال Azure Stream Analytics، وكيفية استكشاف هذه المشكلات وإصلاحها، وكيفية تصحيحها.

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

لا تتلقى الوظيفة أحداث الإدخال

  1. تحقق من اتصالك بالمدخلات والمخرجات. استخدم الزر Test الاتصال ion لكل إدخال وإخراج.

  2. فحص بيانات الإدخال:

    1. استخدم الزر Sample Data لكل إدخال. قم بتنزيل بيانات نموذج الإدخال.

    2. افحص نموذج البيانات لفهم المخطط وأنواع البيانات.

    3. تحقق من مقاييس مراكز الأحداث للتأكد من إرسال الأحداث. يجب أن تكون قياسات الرسائل أكبر من الصفر إذا كانت "مراكز الأحداث" تتلقى الرسائل.

  3. تأكد من تحديد نطاق زمني في معاينة الإدخال. اختر Select time range، ثم أدخل مدة عينة قبل اختبار الاستعلام الخاص بك.

هام

بالنسبة لوظائف Azure Stream Analytics التي لم يتم إدخالها في الشبكة، لا تعتمد على عنوان IP المصدر للاتصالات القادمة من Stream Analytics بأي شكل من الأشكال. يمكن أن تكون عناوين IP عامة أو خاصة، اعتمادا على عمليات البنية الأساسية للخدمة التي تحدث من وقت لآخر.

تتسبب أحداث الإدخال التي تم تكوينها بشكل غير صحيح في أخطاء إلغاء التسلسل

تحدث مشاكل إلغاء التسلسل عندما يحتوي دفق الإدخال لمهمة Stream Analytics على رسائل مشوهة. على سبيل المثال، يمكن أن يتسبب قوس أو قوس مفقود في كائن JSON، أو تنسيق طابع زمني غير صحيح في الحقل الزمني، في حدوث رسالة مشوهة.

عندما تتلقى وظيفة Stream Analytics رسالة مشوهة من أحد المدخلات، فإنها تسقط الرسالة وتعلمك بتحذير. يظهر رمز تحذير على لوحة Inputs لمهمة Stream Analytics. رمز التحذير موجود طالما أن المهمة في حالة تشغيل.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

قم بتشغيل سجلات الموارد لعرض تفاصيل الخطأ والرسالة (الحمولة) التي تسببت في الخطأ. توجد عدة أسباب لحدوث أخطاء إلغاء التسلسل. لمزيد من المعلومات حول أخطاء إلغاء التسلسل المحددة، راجع أخطاء بيانات الإدخال. إذا لم يتم تشغيل سجلات الموارد، يظهر إعلام موجز في مدخل Microsoft Azure.

Screenshot that shows a warning notification about input details.

إذا كانت حمولة الرسالة أكبر من 32 كيلوبايت أو بتنسيق ثنائي، فقم بتشغيل التعليمات البرمجية CheckMalformedEvents.cs المتوفرة في مستودع نماذج GitHub. تقرأ هذه التعليمة البرمجية إزاحة معرف القسم وتطبع البيانات الموجودة في تلك الإزاحة.

الأسباب الشائعة الأخرى لأخطاء إلغاء تسلسل الإدخال هي:

  • عمود عدد صحيح له قيمة أكبر من 9223372036854775807.
  • سلاسل بدلا من صفيف من العناصر أو كائنات مفصولة بخط. مثال صالح: *[{'a':1}]*. مثال غير صحيح: *"'a' :1"*.
  • استخدام Event Hubs التقاط كائن ثنائي كبير الحجم بتنسيق Avro كإدخل في وظيفتك.
  • وجود عمودين في حدث إدخال واحد يختلف فقط في حالة. مثال: *column1* و *COLUMN1*.

تغييرات عدد الأقسام

يمكن تغيير عدد أقسام مراكز الأحداث. إذا تم تغيير عدد أقسام مركز الأحداث، فستحتاج إلى إيقاف مهمة Stream Analytics وإعادة تشغيلها.

يظهر الخطأ التالي عند تغيير عدد أقسام مركز الأحداث أثناء تشغيل المهمة: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException.

تتجاوز المهمة الحد الأقصى لمستلمي مراكز الأحداث

أفضل ممارسة لاستخدام مراكز الأحداث هي استخدام مجموعات مستهلكين متعددة لتوسيع نطاق العمل. يؤثر عدد القراء في وظيفة Stream Analytics لإدخال معين على عدد القراء في مجموعة مستهلكين واحدة.

يعتمد العدد الدقيق للمستلمين على تفاصيل التنفيذ الداخلية لمنطق مخطط التوسع. لا يتم عرض الرقم خارجيا. يمكن أن يتغير عدد القراء عند بدء مهمة أو ترقيتها.

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

The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hubs Receivers.

The following information may be helpful in identifying the connected receivers: Exceeded the maximum number of allowed receivers per partition in a consumer group which is 5. List of connected receivers – 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1.

إشعار

عندما يتغير عدد القراء أثناء ترقية الوظيفة، تتم كتابة التحذيرات العابرة في سجلات التدقيق. تسترد وظائف Stream Analytics تلقائيا من هذه المشاكل العابرة.

لإضافة مجموعة مستهلكين جديدة في مثيل مراكز الأحداث، اتبع الخطوات التالية:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. حدد موقع مركز الأحداث الخاص بك.

  3. ضمن عنوان Entities، حدد Event Hubs.

  4. حدد مركز الحدث بالاسم.

  5. في صفحة Event Hubs Instance، تحت عنوان Entities، حدد Consumer groups. يتم سرد مجموعة مستهلكين تحمل الاسم $Default .

  6. حدد + Consumer Group لإضافة مجموعة مستهلكين جديدة.

    Screenshot that shows the button for adding a consumer group in Event Hubs.

  7. عند إنشاء الإدخال في وظيفة Stream Analytics للإشارة إلى مركز الحدث، قمت بتحديد مجموعة المستهلكين هناك. تستخدم مراكز الأحداث $Default إذا لم يتم تحديد مجموعة مستهلكين. بعد إنشاء مجموعة مستهلكين، قم بتحرير إدخال مركز الحدث في مهمة Stream Analytics وحدد اسم مجموعة المستهلكين الجديدة.

تتجاوز القراءات لكل قسم حد مراكز الأحداث

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

تتضمن السيناريوهات التي يتجاوز فيها عدد القراء لكل قسم حد مراكز الأحداث وهو خمسة:

  • عبارات متعددة SELECT : إذا كنت تستخدم عبارات متعددة SELECT تشير إلى نفس إدخال مركز الحدث، فإن كل SELECT عبارة تؤدي إلى إنشاء جهاز استقبال جديد.

  • UNION: عند استخدام UNION، من الممكن أن يكون لديك مدخلات متعددة تشير إلى نفس مركز الحدث ومجموعة المستهلكين.

  • SELF JOIN: عند استخدام SELF JOIN عملية، من الممكن الرجوع إلى مركز الحدث نفسه عدة مرات.

يمكن أن تساعد أفضل الممارسات التالية في التخفيف من السيناريوهات التي يتجاوز فيها عدد القراء لكل قسم حد "مراكز الأحداث" وهو خمسة.

قم بتقسيم الاستعلام الخاص بك إلى عدة خطوات باستخدام جملة WITH

WITH تحدد العبارة مجموعة نتائج مسماة مؤقتة يمكن أن FROM تشير إليها عبارة في الاستعلام. يمكنك تعريف العبارة WITH في نطاق تنفيذ عبارة واحدة SELECT .

على سبيل المثال، بدلاً من هذا الاستعلام:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

استخدم هذا الاستعلام:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

تأكد من أن المدخلات مرتبطة بمجموعات المستهلكين المختلفة

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

إنشاء مدخلات منفصلة مع مجموعات مختلفة من المستهلكين

يمكنك إنشاء مدخلات منفصلة مع مجموعات مستهلكين مختلفة لنفس مركز الأحداث. في المثال التالي لاستعلامUNION، يشير InputOne وInputTwo إلى نفس مصدر مراكز الأحداث. يمكن أن يحتوي أي استعلام على مدخلات منفصلة مع مجموعات مستهلكين مختلفة. UNION الاستعلام هو مثال واحد فقط.

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

تتجاوز القراءات لكل قسم حد IoT Hub

تستخدم وظائف Stream Analytics نقطة النهاية المتوافقة مع مراكز الأحداث المضمنة في Azure IoT Hub لتوصيل الأحداث وقراءتها من IoT Hub. إذا تجاوز القراء لكل قسم حدود IoT Hub، يمكنك استخدام الحلول لمراكز الأحداث لحلها. يمكنك إنشاء مجموعة مستهلكين لنقطة النهاية المضمنة من خلال جلسة نقطة نهاية مدخل IoT Hub أو من خلال IoT Hub SDK.

الحصول على المساعدة

لمزيد من المساعدة، جرب صفحة Microsoft Q&A ل Azure Stream Analytics.

الخطوات التالية