مشاركة عبر


التشغيل السريع: إنشاء وظيفة Azure Stream Analytics باستخدام Azure CLI

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

قبل البدء

إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

المتطلبات الأساسية

  • قم بإنشاء مجموعة موارد. يجب نشر جميع موارد Azure في مجموعة موارد. تسمح لك مجموعات الموارد بتنظيم وإدارة موارد Azure ذات الصلة.

    لهذا التشغيل السريع، قم بإنشاء مجموعة موارد تسمى streamanalyticsrg في موقع eastus باستخدام الأمر التالي az group create :

    az group create --name streamanalyticsrg --location eastus
    

إعداد بيانات الإدخال

قبل تحديد وظيفة Stream Analytics، قم بإعداد البيانات المستخدمة لإدخال الوظيفة. تقوم أوامر Azure CLI التالية بإعداد بيانات الإدخال المطلوبة من قبل الوظيفة.

  1. إنشاء مركز IoT باستخدام الأمر az iot hub create . ينشئ هذا المثال IoT Hub يسمى MyASAIoTHub. نظرا لأن أسماء IoT Hub يجب أن تكون فريدة عالميا، فقد تضطر إلى تغيير الاسم إذا تم أخذه بالفعل. قم بتعيين SKU إلى F1 لاستخدام المستوى المجاني إذا كان متوفرا مع اشتراكك. إذا لم يكن كذلك، اختر المستوى الأدنى التالي.

    iotHubName=MyASAIoTHub
    az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
    

    بمجرد إنشاء مركز IoT، احصل على مركز IoT سلسلة الاتصال باستخدام الأمر az iot hub connection-string show. انسخ سلسلة الاتصال بالكامل واحفظه. يمكنك استخدامه أثناء إضافة IoT Hub كمدخل إلى وظيفة Stream Analytics.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. أضف جهازا إلى IoT Hub باستخدام الأمر az iothub device-identity create . ينشئ هذا المثال جهازًا يسمى MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. احصل على سلسلة اتصال الجهاز باستخدام الأمر az iot hub device-identity connection-string show . نسخ سلسلة الاتصال بأكمله وحفظها عند إنشاء جهاز محاكاة Raspberry Pi.

    az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
    

    مثال الإخراج:

    HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
    

إنشاء حساب تخزين كائن ثنائي كبير الحجم

تنشئ أوامر Azure CLI التالية حساب تخزين كائن ثنائي كبير الحجم يستخدم لإخراج المهمة.

  1. إنشاء حساب تخزين للأغراض العامة باستخدام الأمر az storage account create . يمكن استخدام حساب التخزين للأغراض العامة لجميع الخدمات الأربع: الكائنات الثنائية كبيرة الحجم والملفات والجداول وقوائم الانتظار.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. احصل على مفتاح حساب التخزين الخاص بك عن طريق تشغيل الأمر az storage account keys list .

    key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv)
    echo $key
    

    هام

    دون مفتاح الوصول لحساب تخزين Azure. ستستخدم هذا المفتاح لاحقا في هذا التشغيل السريع.

  3. إنشاء حاوية باسم state لتخزين الكائنات الثنائية كبيرة الحجم باستخدام الأمر az storage container create . يمكنك استخدام مفتاح حساب التخزين لتخويل العملية لإنشاء الحاوية. لمزيد من المعلومات حول تخويل عمليات البيانات باستخدام Azure CLI، راجع تخويل الوصول إلى البيانات الثنائية كبيرة الحجم أو قائمة الانتظار باستخدام Azure CLI.

    az storage container create \
        --account-name $storageAccountName \
        --name state \
        --account-key $key \
        --auth-mode key
    

إنشاء مشروع وظائف Stream Analytics

إنشاء وظيفة Stream Analytics باستخدام الأمر az stream-analytics job create .

az stream-analytics job create \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg" \
    --location "eastus" \
    --output-error-policy "Drop" \
    --out-of-order-policy "Drop" \
    --order-max-delay 5 \
    --arrival-max-delay 16 \
    --data-locale "en-US"

تكوين الإدخال إلى المهمة

أضف إدخالا إلى وظيفتك باستخدام az stream-analytics input cmdlet. يأخذ cmdlet هذا اسم الوظيفة واسم إدخال الوظيفة واسم مجموعة الموارد وخصائص الإدخال بتنسيق JSON كمعلمات. في هذا المثال، ستقوم بإنشاء IoT Hub كمدخل.

هام

  • استبدل IOT HUB ACCESS KEY بقيمة مفتاح الوصول المشترك في سلسلة اتصال IOT Hub التي حفظتها. على سبيل المثال، إذا كانت سلسلة اتصال IOT Hub هي: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=، فإن قيمة مفتاح الوصول المشترك هي xxxxxxxxxxxxxx=. أثناء استبدال القيمة، تأكد من عدم حذف \ حرف (إلغاء) ل " (علامات الاقتباس المزدوجة).
  • قم بتحديث قيمة iotHubNamespace في الأمر التالي إذا استخدمت اسما آخر غير MyASAIoTHub. قم بتشغيل echo $iotHubName لمشاهدة اسم IoT Hub.
az stream-analytics input create \
    --properties "{\"type\":\"Stream\",\"datasource\":{\"type\":\"Microsoft.Devices/IotHubs\",\"properties\":{\"consumerGroupName\":\"\$Default\",\"endpoint\":\"messages/events\",\"iotHubNamespace\":\"MyASAIoTHub\",\"sharedAccessPolicyKey\":\"IOT HUB ACCESS KEY\",\"sharedAccessPolicyName\":\"iothubowner\"}},\"serialization\":{\"type\":\"Json\",\"encoding\":\"UTF8\"}}" \
    --input-name "asaiotinput" \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg"

تكوين الإخراج إلى الوظيفة

أضف إخراجا إلى وظيفتك باستخدام az stream-analytics output create cmdlet. يأخذ cmdlet هذا اسم الوظيفة واسم إخراج الوظيفة واسم مجموعة الموارد ومصدر البيانات بتنسيق JSON ونوع التسلسل كمعلمات.

هام

استبدل STORAGEACCOUNTNAME> باسم حساب Azure Storage الخاص بك ومفتاح STORAGEACCESSKEY> الوصول لحساب التخزين الخاص بك. إذا لم تقم بتدوين هذه القيم، فقم بتشغيل الأوامر التالية للحصول عليها: echo $storageAccountName و echo $key. أثناء استبدال القيم، تأكد من عدم حذف \ حرف (إلغاء) ل " (علامات الاقتباس المزدوجة).

az stream-analytics output create \
    --job-name streamanalyticsjob \
    --datasource "{\"type\":\"Microsoft.Storage/Blob\",\"properties\":{\"container\":\"state\",\"dateFormat\":\"yyyy/MM/dd\",\"pathPattern\":\"{date}/{time}\",\"storageAccounts\":[{\"accountKey\":\"STORAGEACCESSKEY\",\"accountName\":\"STORAGEACCOUNTNAME\"}],\"timeFormat\":\"HH\"}}" \
    --serialization "{\"type\":\"Json\",\"properties\":{\"format\":\"Array\",\"encoding\":\"UTF8\"}}" \
    --output-name asabloboutput \
    --resource-group streamanalyticsrg

حدد استعلام التحويل

إضافة تحويل وظيفتك باستخدام az stream-analytics transformation create cmdlet.

az stream-analytics transformation create \
    --resource-group streamanalyticsrg \
    --job-name streamanalyticsjob \
    --name Transformation \
    --streaming-units "6" \
    --saql "SELECT * INTO asabloboutput FROM asaiotinput WHERE Temperature > 27"

تشغيل محاكي IoT

  1. افتح Raspberry Pi Azure IoT Online Simulator .

  2. استبدل العنصر النائب في السطر 15 بسلسلة اتصال جهاز Azure IoT Hub بأكملها (وليس سلسلة اتصال IoT Hub) التي حفظتها في بداية التشغيل السريع.

  3. حدد تشغيل. يجب أن يُظهر الإخراج بيانات المستشعر والرسائل المُرسلة إلى مركز loT الخاص بك.

    Raspberry Pi Azure IoT Online Simulator

ابدأ وظيفة Stream Analytics وتحقق من الإخراج

ابدأ المهمة باستخدام az stream-analytics job start cmdlet. يأخذ هذا الأمر cmdlet اسم الوظيفة، واسم مجموعة الموارد، ووضع بدء الإخراج، ووقت البدء كمعلمات. OutputStartMode يقبل قيم JobStartTime، CustomTime أو LastOutputEventTime.

بعد تشغيل الأمر cmdlet التالي، فإنه يقوم بإعادة True كإخراج إذا بدأت الوظيفة.

az stream-analytics job start \
    --resource-group streamanalyticsrg \
    --name streamanalyticsjob \
    --output-start-mode JobStartTime

امنحه بضع دقائق ثم تحقق من إنشاء ملف إخراج في state حاوية الكائن الثنائي كبير الحجم.

لقطة شاشة تعرض ملف الإخراج في حاوية الكائنات الثنائية كبيرة الحجم للدولة.

قم بتنزيل الملف وفتحه لمشاهدة العديد من الإدخالات المشابهة للإدخال التالي:

{
    "messageId": 229,
    "deviceId": "Raspberry Pi Web Client",
    "temperature": 31.85214010589595,
    "humidity": 60.278830289656284,
    "EventProcessedUtcTime": "2023-02-28T22:06:33.5567789Z",
    "PartitionId": 3,
    "EventEnqueuedUtcTime": "2023-02-28T22:05:49.6520000Z",
    "IoTHub": {
        "MessageId": null,
        "CorrelationId": null,
        "ConnectionDeviceId": "MyASAIoTDevice",
        "ConnectionDeviceGenerationId": "638132150746523845",
        "EnqueuedTime": "2023-02-28T22:05:49.6520000Z",
        "StreamId": null
    }
}

تنظيف الموارد

احذف مجموعة الموارد، التي ستحذف جميع الموارد في مجموعة الموارد بما في ذلك وظيفة Stream Analytics، وIoT Hub، وحساب Azure Storage.

az group delete \
    --name streamanalyticsrg \
    --no-wait

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

في هذا التشغيل السريع، قمت بنشر مهمة Stream Analytics بسيطة باستخدام Azure CLI. كما يمكنك نشر وظائف Stream Analytics باستخدام مدخل AzureوVisual Studio.

للتعرف على تكوين مصادر الإدخال الأخرى وإجراء الكشف في الوقت الفعلي، تابع إلى المقالة التالية: