إخراج Azure Blob Storage وData Lake Storage Gen2 من Stream Analytics

يجعل Azure Data Lake Storage Gen2 Azure Storage الأساس لبناء مستودعات بيانات المؤسسة على Azure. تم تصميم Data Lake Storage Gen2 لخدمة بيتابايت متعددة من المعلومات مع الحفاظ على مئات الجيجابت من معدل النقل. يمكنك استخدامه لإدارة كميات هائلة من البيانات بسهولة. جزء أساسي من Data Lake Storage Gen2 هو إضافة مساحة اسم هرمية إلى Azure Blob Storage.

يوفر Blob Storage حلا فعالا من حيث التكلفة وقابلا للتطوير لتخزين كميات كبيرة من البيانات غير المنظمة في السحابة. للحصول على مقدمة حول Blob Storage واستخدامه، راجع تحميل وتنزيل وسرد الكائنات الثنائية كبيرة الحجم باستخدام مدخل Microsoft Azure.

إشعار

للحصول على معلومات حول السلوكيات الخاصة بتنسيقات Avro وParquet، راجع الأقسام ذات الصلة في النظرة العامة.

تكوين الإخراج

يسرد الجدول التالي أسماء الخصائص وأوصافها لإنشاء كائن ثنائي كبير الحجم أو إخراج Data Lake Storage Gen2.

اسم الخاصية ‏‏الوصف
اسم مستعار للإخراج اسم مألوف يستخدم في الاستعلامات لتوجيه إخراج الاستعلام إلى هذا الكائن الثنائي كبير الحجم.
حساب التخزين اسم حساب التخزين حيث ترسل الإخراج الخاص بك.
مفتاح حساب السعة التخزينية المفتاح السري المرتبط بحساب السعة التخزينية.
الحاوية تجميع منطقي للكائنات الثنائية كبيرة الحجم المخزنة في Blob Storage. عندما تقوم بتحميل كائن ثنائي كبير الحجم إلى خدمة Blob Storage، يجب عليك تحديد حاوية لذلك الكائن.

اسم الحاوية الديناميكية اختياري. وهو يدعم ديناميكية {field} واحدة فقط في اسم الحاوية. يجب أن يكون الحقل موجودا في بيانات الإخراج واتبع نهج اسم الحاوية.

يجب أن يكون stringنوع بيانات الحقل . لاستخدام حقول ديناميكية متعددة أو دمج نص ثابت مع حقل ديناميكي، يمكنك تعريفه في الاستعلام باستخدام دالات سلسلة مضمنة، مثل CONCAT و LTRIM.
تنسيق تسلسل الأحداث تنسيق التسلسل لبيانات الإخراج. يتم دعم JSON وCSV وAvro وParquet. يتم سرد Delta Lake كخيار هنا. تكون البيانات بتنسيق Parquet إذا تم تحديد Delta Lake. تعرف على المزيد حول Delta Lake.
اسم مسار دلتا مطلوب عندما يكون تنسيق تسلسل الحدث Delta Lake. المسار المستخدم لكتابة جدول Delta Lake داخل الحاوية المحددة. يتضمن اسم الجدول. لمزيد من المعلومات والأمثلة، راجع الكتابة إلى جدول Delta Lake.
وضع الكتابة يتحكم وضع الكتابة في الطريقة التي يكتب بها Azure Stream Analytics إلى ملف إخراج. يحدث التسليم مرة واحدة بالضبط فقط عندما يكون وضع الكتابة مرة واحدة. لمزيد من المعلومات، راجع القسم التالي.
عمود القسم اختياري. {field} الاسم من بيانات الإخراج إلى القسم. يتم دعم عمود قسم واحد فقط.
نمط المسار مطلوب عندما يكون تنسيق تسلسل الحدث Delta Lake. نمط مسار الملف المستخدم لكتابة الكائنات الثنائية كبيرة الحجم داخل الحاوية المحددة.

في نمط المسار، يمكنك اختيار استخدام مثيل واحد أو أكثر من متغيرات التاريخ والوقت لتحديد التردد الذي تتم فيه كتابة الكائنات الثنائية كبيرة الحجم: {date}، {time}.

إذا كان وضع الكتابة الخاص بك هو مرة واحدة، فستحتاج إلى استخدام كل من {date} و {time}.

يمكنك استخدام تقسيم كائن ثنائي كبير الحجم مخصص لتحديد اسم مخصص {field} واحد من بيانات الحدث إلى الكائنات الثنائية كبيرة الحجم للقسم. اسم الحقل أبجدي رقمي ويمكن أن يتضمن مسافات وواصلات وشرطات سفلية. تتضمن القيود المفروضة على الحقول المخصصة القيود التالية:
  • لا يسمح بأي اسم مخصص {field} ديناميكي إذا كان وضع الكتابة مرة واحدة.
  • أسماء الحقول ليست حساسة لحالة الأحرف. على سبيل المثال، لا يمكن للخدمة التمييز بين العمود ID والعمود id.
  • الحقول المتداخلة غير مسموح بها. بدلاً من ذلك، استخدم اسمًا مستعارًا في استعلام الوظيفة "لتسوية" الحقل.
  • لا يمكن استخدام التعبيرات كاسم حقل.

تتيح هذه الميزة استخدام تكوينات مخصصة لمحدِّد تنسيق التاريخ/الوقت في المسار. يجب تحديد تنسيقات التاريخ/الوقت المخصصة كل على حدة وإحاطتها بالكلمة {datetime:\<specifier>} الأساسية. المدخلات المسموح بها هي \<specifier> yyyyأو MMأو Mأو ddأو dأو HHأو m. Hsmmss {datetime:\<specifier>} يمكن استخدام الكلمة الأساسية عدة مرات في المسار لتشكيل تكوينات التاريخ/الوقت المخصصة.

أمثلة:
  • مثال 1: cluster1/logs/{date}/{time}
  • مثال 2: cluster1/logs/{date}
  • مثال 3: cluster1/{client_id}/{date}/{time}
  • مثال 4: cluster1/{datetime:ss}/{myField} مكان الاستعلام SELECT data.myField AS myField FROM Input;
  • مثال 5: cluster1/year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

الطابع الزمني لهيكل المجلد الذي تم إنشاؤه يتبع التوقيت العالمي المنسق وليس التوقيت المحلي. System.Timestamp هو الوقت المستخدم لجميع التقسيم المستند إلى الوقت.

تستخدم تسمية الملف الاصطلاح التالي:

{Path Prefix Pattern}/schemaHashcode_Guid_Number.extension

هنا، Guid يمثل المعرف الفريد المعين لكاتب داخلي تم إنشاؤه للكتابة إلى ملف كائن ثنائي كبير الحجم. يمثل الرقم فهرس كتلة الكائن الثنائي كبير الحجم.

مثال على ملفات الإخراج:
  • Myoutput/20170901/00/45434_gguid_1.csv
  • Myoutput/20170901/01/45434_gguid_1.csv

لمزيد من المعلومات حول هذه الميزة، اطلع على تقسيم إخراج الكائن الثنائي كبير الحجم المخصص في Azure Stream Analytics.
تنسيق التاريخ مطلوب عندما يكون تنسيق تسلسل الحدث Delta Lake. إذا تم استخدام رمز التاريخ المميز في مسار البادئة، يمكنك تحديد تنسيق التاريخ الذي يتم تنظيم ملفاتك به. مثال على ذلك YYYY/MM/DD .
تنسيق الوقت مطلوب عندما يكون تنسيق تسلسل الحدث Delta Lake. إذا تم استخدام رمز الوقت في مسار البادئة، فحدد تنسيق الوقت الذي يتم تنظيم ملفاتك به.
الحد الأدنى للصفوف عدد الصفوف الدنيا لكل دفعة. بالنسبة إلى Parquet، ستنشئ كل دفعة ملفاً جديداً. القيمة الافتراضية الحالية هي 2000 صف والحد الأقصى المسموح به هو 10000 صف.
الحد الأقصى للوقت أقصى وقت انتظار لكل دفعة. بعد هذا الوقت، تتم كتابة الدفعة إلى الإخراج حتى إذا لم يتم استيفاء متطلبات الحد الأدنى للصفوف. القيمة الافتراضية الحالية هي دقيقة واحدة والحد الأقصى المسموح به هو ساعتان. إذا كان إخراج blob الخاص بك يحتوي على تكرار نمط المسار، فلا يمكن أن يكون وقت الانتظار أعلى من النطاق الزمني للقسم.
الترميز إذا كنت تستخدم تنسيق CSV أو JSON، فيجب تحديد الترميز. UTF-8 هو تنسيق الترميز الوحيد المدعوم في الوقت الحالي.
المحدِد ينطبق فقط على تسلسل CSV. يدعم Stream Analytics العديد من المحددات الشائعة لتسلسل بيانات CSV. القيم المدعومة هي الفاصلة، والفاصلة المنقوطة، والمسافة، وعلامة الجدولة، والشريط العمودي.
Format ينطبق فقط على تسلسل JSON. يحدد الخيارLine separated أن الناتج تم تنسيقه عن طريق فصل كل عنصر JSON بسطر جديد. إذا حددت Line separated، فستتم قراءة JSON عنصر واحد في كل مرة. المحتوى بأكمله في حد ذاته لن يكون JSON صالحا. يحدد الصفيف تنسيق الإخراج كصفيف من عناصر JSON. يتم إغلاق هذه المصفوفة فقط عند توقف الوظيفة أو عند انتقال Stream Analytics إلى نافذة الوقت التالية. بشكل عام، يفضل استخدام JSON مفصول بالخط لأنه لا يتطلب أي معالجة خاصة بينما لا يزال ملف الإخراج قيد الكتابة إليه.

التسليم مرة واحدة بالضبط (معاينة عامة)

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

وضع الكتابة

هناك طريقتان يكتبهما Stream Analytics إلى حساب Blob Storage أو Data Lake Storage Gen2. إحدى الطرق هي إلحاق النتائج إما بنفس الملف أو بتسلسل من الملفات عند ظهور النتائج. الطريقة الأخرى هي الكتابة بعد جميع نتائج قسم الوقت، عندما تتوفر جميع البيانات الخاصة بقسم الوقت. يتم تمكين التسليم مرة واحدة بالضبط عندما يكون وضع الكتابة مرة واحدة.

لا يوجد خيار وضع الكتابة ل Delta Lake. ومع ذلك، يوفر إخراج Delta Lake أيضا ضمانات مرة واحدة بالضبط باستخدام سجل Delta. لا يتطلب قسم الوقت ويكتب النتائج باستمرار استنادا إلى معلمات الدفعات التي حددها المستخدم.

إشعار

إذا كنت تفضل عدم استخدام ميزة المعاينة للتسليم مرة واحدة بالضبط، فحدد إلحاق عند وصول النتائج.

التكوين

لتلقي التسليم مرة واحدة بالضبط لحساب Blob Storage أو Data Lake Storage Gen2، تحتاج إلى تكوين الإعدادات التالية:

  • حدد مرة واحدة بعد توفر جميع نتائج قسم الوقت لوضع الكتابة الخاص بك.
  • توفير نمط المسار مع كل من {date} و {time} المحدد.
  • حدد تنسيق التاريخ وتنسيق الوقت.

القيود

  • البث الفرعي غير مدعوم.
  • يصبح نمط المسار خاصية مطلوبة ويجب أن يحتوي على كل من {date} و {time}. لا يسمح بأي اسم مخصص {field} ديناميكي. تعرف على المزيد حول نمط المسار المخصص.
  • إذا بدأت المهمة في وقت مخصص قبل وقت الإخراج الأخير أو بعده، فهناك خطر من الكتابة فوق الملف. على سبيل المثال، عند تعيين تنسيق الوقت إلى HH، يتم إنشاء الملف كل ساعة. إذا أوقفت المهمة في الساعة 8:15 صباحا وقمت بإعادة تشغيل المهمة في الساعة 8:30 صباحا، فإن الملف الذي تم إنشاؤه بين الساعة 8 صباحا و9 صباحا لا يغطي سوى البيانات من 8:30 صباحا إلى 9 صباحا. تفقد البيانات من 8 صباحا إلى 8:15 صباحا عند الكتابة فوقها.

ملفات الإخراج Blob

عند استخدام Blob Storage كإخراج، يتم إنشاء ملف جديد في الكائن الثنائي كبير الحجم في الحالات التالية:

  • يتجاوز الملف الحد الأقصى لعدد الكتل المسموح بها (حاليا 50,000). قد تصل إلى الحد الأقصى المسموح به لعدد الكتل دون الوصول إلى الحد الأقصى المسموح به لحجم الكائن الثنائي كبير الحجم. على سبيل المثال، إذا كان معدل الإخراج مرتفعًا، يمكنك رؤية المزيد من وحدات البايت لكل كتلة، ويكون حجم الملف أكبر. إذا كان معدل الإخراج منخفضًا، فإن كل كتلة بها بيانات أقل، ويكون حجم الملف أصغر.
  • هناك تغيير في المخطط في الإخراج، ويتطلب تنسيق الإخراج مخططا ثابتا (CSV أو Avro أو Parquet).
  • تتم إعادة تشغيل الوظيفة، إما خارجيا بواسطة مستخدم يوقفها ويبدأها أو داخليا لصيانة النظام أو استرداد الأخطاء.
  • يتم تقسيم الاستعلام بالكامل، ويتم إنشاء ملف جديد لكل قسم إخراج. يأتي من استخدام PARTITION BY أو التوازي الأصلي المقدم في مستوى التوافق 1.2.
  • يحذف المستخدم ملفا أو حاوية لحساب التخزين.
  • الإخراج هو الوقت المقسم باستخدام نمط بادئة المسار، ويتم استخدام كائن ثنائي كبير الحجم جديد عندما ينتقل الاستعلام إلى الساعة التالية.
  • يتم تقسيم الإخراج بواسطة حقل مخصص، ويتم إنشاء كائن ثنائي كبير الحجم جديد لكل مفتاح قسم إذا لم يكن موجودا.
  • يتم تقسيم الإخراج بواسطة حقل مخصص حيث تتجاوز علاقة مفتاح القسم الأساسية 8000، ويتم إنشاء كائن ثنائي كبير الحجم جديد لكل مفتاح قسم.

التقسيم

بالنسبة لمفتاح القسم، استخدم {date} والرموز {time} المميزة من حقول الحدث في نمط المسار. اختر تنسيق التاريخ، مثل YYYY/MM/DDأو DD/MM/YYYYأو .MM-DD-YYYY HH يستخدم لتنسيق الوقت. يمكن تقسيم إخراج Blob بواسطة سمة {fieldname} حدث مخصصة واحدة أو {datetime:\<specifier>}. يتبع عدد كاتبي الإخراج تقسيم الإدخال للاستعلامات القابلة للتوازي تماماً.

حجم دفعة الإخراج

لمعرفة الحد الأقصى لحجم الرسالة، راجع حدود Azure Storage. الحد الأقصى لحجم كتلة كائن ثنائي كبير الحجم هو 4 ميغابايت والحد الأقصى لعدد كتل الكائن الثنائي كبير الحجم هو 50000.

القيود

  • إذا تم استخدام رمز شرطة مائلة للأمام (/) في نمط المسار (على سبيل المثال، /folder2/folder3)، يتم إنشاء مجلدات فارغة ولا تكون مرئية في Storage Explorer.
  • يقوم Stream Analytics بإلحاق الملف نفسه في الحالات التي لا تكون فيها هناك حاجة إلى ملف كائن ثنائي كبير الحجم جديد. قد يتسبب ذلك في إنشاء المزيد من المشغلات إذا تم تكوين خدمات Azure مثل Azure Event Grid ليتم تشغيلها على تحديث ملف كائن ثنائي كبير الحجم.
  • يقوم Stream Analytics بإلحاق كائن ثنائي كبير الحجم بشكل افتراضي. عندما يكون تنسيق الإخراج عبارة عن صفيف JSON، فإنه يكمل الملف عند إيقاف التشغيل أو عندما ينتقل الإخراج إلى قسم المرة التالية للمخرجات المقسمة زمنيا. في بعض الحالات، مثل إعادة التشغيل غير النظيفة، من المحتمل أن يكون القوس المربع للإغلاق (]) لصفيف JSON مفقودا.