المخرجات من Stream Analytics
تتكون وظيفة Azure Stream Analytics من إدخال واستعلام ومخرج. هناك العديد من أنواع المخرجات التي يمكنك إرسال البيانات المحولة إليها. تسرد هذه المقالة مخرجات Stream Analytics المدعومة. عند تصميم استعلام Stream Analytics، يُرجى الرجوع إلى اسم الإخراج باستخدام عبارة INTO. يمكنك استخدام مخرج واحد لكل مهمة، أو مخرجات متعددة لكل مهمة بث (إذا كنت بحاجة إليها) من خلال توفير عدة جمل INTO في الاستعلام.
لإنشاء مخرجات مهام Stream Analytics وتحريرها واختبارها، يمكنك استخدام مدخل Microsoft Azure، وAzure PowerShell، و.NET API، وواجهة برمجة تطبيقات REST، وVisual Studio، وVisual Studio Code.
إشعار
نوصي بشدة باستخدام أدوات Stream Analytics ل Visual Studio Code للحصول على أفضل تجربة تطوير محلية. هناك فجوات في الميزات المعروفة في أدوات Stream Analytics لبرنامج Visual Studio 2019 (الإصدار 2.6.3000.0) ولن يتم تحسينها من الآن فصاعداً.
تدعم بعض أنواع المخرجات التقسيم كما هو موضح في الجدول التالي.
تدعم جميع المخرجات الإرسال في دفعات، ولكن بعضها فقط يدعم تعيين حجم دفعة الإخراج بشكل صريح. لمزيد من المعلومات، راجع قسم أحجام دفعات الإخراج.
نوع الإخراج | التقسيم | Security |
---|---|---|
Azure Data Explorer | نعم | الهوية المُدارة |
دالات Azure | نعم | مفتاح الوصول |
Azure Synapse Analytics | نعم | مصادقة مستخدم SQL، هوية مدارة |
تخزين Blob وAzure Data Lake Gen 2 | نعم | مفتاح الاختصار، هوية مدارة |
Azure Cosmos DB | نعم | مفتاح الاختصار، هوية مدارة |
Azure Data Lake Storage Gen 2 | نعم | الهوية المدارة لمستخدم Microsoft Entra |
مراكز أحداث Azure | نعم، تحتاج إلى تعيين عمود مفتاح القسم في تكوين الإخراج. | مفتاح الاختصار، هوية مدارة |
Kafka (معاينة) | نعم، تحتاج إلى تعيين عمود مفتاح القسم في تكوين الإخراج. | مفتاح الاختصار، هوية مدارة |
Azure Database for PostgreSQL | نعم | مصادقة اسم المستخدم وكلمة المرور |
Power BI | لا | مستخدم Microsoft Entra، الهوية المدارة |
قوائم انتظار ناقل خدمة Azure | نعم | مفتاح الاختصار، هوية مدارة |
مواضيع ناقل خدمة Azure | نعم | مفتاح الاختصار، هوية مدارة |
قاعدة بيانات Azure SQL | نعم، اختياري. | مصادقة مستخدم SQL، هوية مدارة |
تخزين Azure Table | نعم | مفتاح الحساب |
هام
يستخدم Stream Analytics إدراج أو استبدال واجهة برمجة التطبيقات حسب التصميم. تحل هذه العملية محل كيان حالي أو تُدرِج كياناً جديداً إذا لم يكن موجوداً في الجدول.
التقسيم
يدعم Stream Analytics أقساماً لجميع المخرجات باستثناء Power BI. لمزيد من المعلومات حول مفاتيح الأقسام وعدد كتّاب الإخراج، راجع المقالة لنوع الإخراج المحدد الذي تهتم به. يتم ربط مقالات أنواع الإخراج في القسم السابق.
بالإضافة إلى ذلك، للضبط الأكثر تقدماً للأقسام، يمكن التحكم في عدد كتّاب الإخراج باستخدام عبارة INTO <partition count>
(راجع INTO) في استعلامك، والتي يمكن أن تكون مفيدة في تحقيق مخطط الوظيفة المطلوبة. إذا لم يكن محول الإخراج مقسما، فإن نقص البيانات في قسم إدخال واحد يؤدي إلى تأخير يصل إلى وقت الوصول المتأخر. في مثل هذه الحالات، يتم دمج الإخراج في كاتب واحد، مما قد يتسبب في حدوث اختناقات في خط الأنابيب الخاص بك. لمعرفة المزيد حول نهج الوصول المتأخر، راجع اعتبارات ترتيب الحدث في Azure Stream Analytics.
حجم دفعة الإخراج
تدعم جميع المخرجات الإرسال في دفعات، ولكن بعض إعدادات الدعم فقط هي حجم الدفعة بشكل صريح. يستخدم Azure Stream Analytics دفعات متغيرة الحجم لمعالجة الأحداث والكتابة في المخرجات. عادةً لا يكتب محرك Stream Analytics رسالة واحدة في كل مرة، ويستخدم الدفعات لتحقيق الكفاءة. عندما يكون معدل كل من الأحداث الواردة والصادرة مرتفعًا، يستخدم Stream Analytics دفعات أكبر. عندما يكون معدل الخروج منخفضًا، فإنه يستخدم دفعات أصغر للحفاظ على وقت الاستجابة منخفضًا.
سلوك تقسيم ملف Avro وParquet
يمكن لاستعلام Stream Analytics إنشاء مخططات متعددة لإخراج معين. يمكن تغيير قائمة الأعمدة المتوقعة ونوعها على أساس صف تلو الآخر. حسب التصميم، لا يدعم تنسيقا Avro وParquet المخططات المتغيرة في ملف واحد.
قد تحدث السلوكيات التالية عند توجيه دفق مع مخططات متغيرة إلى إخراج باستخدام هذه التنسيقات:
- إذا كان يمكن الكشف عن تغيير المخطط، يتم إغلاق ملف الإخراج الحالي، وتهيئة ملف جديد على المخطط الجديد. يؤدي تقسيم الملفات على هذا النحو إلى إبطاء الإخراج بشدة عندما تحدث تغييرات المخطط بشكل متكرر. يمكن أن يؤثر هذا السلوك بشدة على الأداء العام للوظيفة
- إذا تعذر الكشف عن تغيير المخطط، فمن المرجح أن يتم رفض الصف، وتتعثر المهمة حيث لا يمكن إخراج الصف. الأعمدة المتداخلة أو الصفائف متعددة الأنواع هي حالات لا يتم اكتشافها ورفضها.
نوصي بأن تفكر في كتابة المخرجات باستخدام تنسيق Avro أو Parquet بقوة، أو المخطط عند الكتابة، والاستعلامات التي تستهدف كتابتها على هذا النحو (تحويلات وإسقاطات صريحة لمخطط موحد).
إذا كانت هناك حاجة إلى إنشاء مخططات متعددة، ففكر في إنشاء مخرجات متعددة وتقسيم السجلات إلى كل وجهة باستخدام عبارة WHERE
.
خصائص نافذة إرسال مخرجات Parquet في دفعات
عند استخدام نشر قالب Azure Resource Manager أو واجهة برمجة تطبيقات REST، فإن خاصيتي نافذة الإرسال في دفعات هما:
timeWindow
أقصى وقت انتظار لكل دفعة. يجب أن تكون القيمة سلسلة من
Timespan
. على سبيل المثال،00:02:00
لمدة دقيقتين. بعد هذا الوقت، تتم كتابة الدفعة إلى الإخراج حتى إذا لم يتم استيفاء متطلبات الحد الأدنى للصفوف. القيمة الافتراضية الحالية هي دقيقة واحدة والحد الأقصى المسموح به هو ساعتان. إذا كان إخراج blob الخاص بك يحتوي على تكرار نمط المسار، فلا يمكن أن يكون وقت الانتظار أعلى من النطاق الزمني للقسم.sizeWindow
عدد الصفوف الدنيا لكل دفعة. بالنسبة إلى Parquet، ستنشئ كل دفعة ملفاً جديداً. القيمة الافتراضية الحالية هي 2000 صف والحد الأقصى المسموح به هو 10000 صف.
يتم دعم خصائص نافذة الدفعات هذه فقط بواسطة إصدار واجهة برمجة التطبيقات 2017-04-01-preview أو أعلى. فيما يلي مثال على حمولة JSON لاستدعاء REST API:
"type": "stream",
"serialization": {
"type": "Parquet",
"properties": {}
},
"timeWindow": "00:02:00",
"sizeWindow": "2000",
"datasource": {
"type": "Microsoft.Storage/Blob",
"properties": {
"storageAccounts" : [
{
"accountName": "{accountName}",
"accountKey": "{accountKey}",
}
],