استخدام إعادة التقسيم لتحسين المعالجة باستخدام Azure Stream Analytics

توضح لك هذه المقالة كيفية استخدام إعادة التقسيم لتوسيع نطاق استعلام Azure Stream Analytics للسيناريوهات التي لا يمكن موازاتها بالكامل.

قد لا تتمكن من استخدام التوازي إذا:

  • كنت لا تتحكم في مفتاح القسم لتدفق المدخلات الخاص بك.
  • المصدر الخاص بك "ينشر" الإدخال عبر أقسام متعددة التي تحتاج لاحقًا إلى أن يتم دمجها.

يلزم إعادة تقسيم البيانات أو إعادة ترتيبها عند معالجة البيانات على دفق لا يتم تقسيمه وفقًا لنظام إدخال طبيعي، مثل PartitionId لـ Event Hubs. عند إعادة التقسيم، يمكن معالجة كل جزء بشكل مستقل، ما يسمح لك بتوسيع خطيًا لمسار التدفق الخاص بك.

كيفية إعادة التقسيم

يمكنك إعادة تقسيم الإدخال بطريقتين:

  1. استخدام وظيفة Stream Analytics منفصلة تقوم بإعادة التقسيم
  2. استخدام وظيفة واحدة ولكن بعد القيام بإعادة تقسيم أولاً قبل منطق التحليلات المخصصة

إنشاء وظيفة Stream Analytics منفصلة لإعادة تقسيم الإدخال

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

-- For compat level 1.2 or higher
SELECT * 
INTO output
FROM input

--For compat level 1.1 or lower
SELECT *
INTO output
FROM input PARTITION BY PartitionId

إعادة تقسيم الإدخال ضمن وظيفة Stream Analytics واحدة

يمكنك أيضا تقديم خطوة في الاستعلام الخاص بك تقوم أولا بإعادة تقسيم الإدخال، والتي يمكن استخدامها بعد ذلك بواسطة خطوات أخرى في الاستعلام الخاص بك. على سبيل المثال، إذا كنت تريد إعادة تقسيم الإدخال استنادًا إلى DeviceId، فسيكون الاستعلام الخاص بك:

WITH RepartitionedInput AS 
( 
    SELECT * 
    FROM input PARTITION BY DeviceID
)

SELECT DeviceID, AVG(Reading) as AvgNormalReading  
INTO output
FROM RepartitionedInput  
GROUP BY DeviceId, TumblingWindow(minute, 1)  

ينضم الاستعلام المثال التالي إلى دفقين من البيانات التي تمت إعادة تقسيمها. عند ضم دفقين من البيانات المعاد تقسيمها، يجب أن يكون للتدفقات نفس مفتاح القسم والعدد. النتيجة هي دفق يحتوي على نفس نظام التقسيم.

WITH step1 AS 
(
    SELECT * FROM input1 
    PARTITION BY DeviceID
),
step2 AS 
(
    SELECT * FROM input2 
    PARTITION BY DeviceID
)

SELECT * INTO output 
FROM step1 PARTITION BY DeviceID 
UNION step2 PARTITION BY DeviceID

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

وحدات البث لإعادة التقسيم

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

عمليات إعادة تقسيم إخراج SQL

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

عندما يكون هناك أكثر من ثمانية أقسام إدخال، قد لا يكون توريث نظام تقسيم الإدخال خيارا مناسبا. ضع في اعتبارك استخدام في الاستعلام لتحديد عدد كتاب الإخراج بشكل صريح.

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

SELECT * INTO [output] 
FROM [input] 
PARTITION BY DeviceID INTO 10

للحصول على مزيدٍ من المعلومات، راجع إخراج Azure Stream Analytics إلى قاعدة بيانات Azure SQL.

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