Поделиться через


Краткое руководство: создание задания Azure Stream Analytics с помощью Azure CLI

В этом кратком руководстве вы используете Azure CLI для определения задания Stream Analytics, которое фильтрует сообщения от датчиков с показателем температуры больше 27. Задание Stream Analytics считывает данные из IoT-хаба, преобразует данные и записывает выходные данные в контейнер в объектном хранилище BLOB. Входные данные, используемые в этом кратком руководстве, создаются онлайн-симулятором Raspberry Pi.

Перед тем как начать

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Предпосылки

  • Создайте группу ресурсов. Все ресурсы Azure должны быть развернуты в группе ресурсов. Группы ресурсов позволяют организовать соответствующие ресурсы Azure и управлять ими.

    В этом кратком руководстве создайте группу ресурсов с именем streamanalyticsrg в регионе eastus с помощью следующей команды az group create.

    az group create --name streamanalyticsrg --location eastus
    

Подготовка входных данных

Перед определением задания Stream Analytics подготовьте данные, используемые для входных данных задания. Следующие команды Azure CLI подготавливают входные данные, необходимые для задания.

  1. Создайте Центр Интернета вещей с помощью команды az iot hub create . Этот пример создает Центр Интернета вещей с именем MyASAIoTHub. Так как имена Центра Интернета вещей должны быть глобально уникальными, может потребоваться изменить имя, если оно уже принято. Установите номер SKU на F1, чтобы использовать бесплатный уровень, если он доступен в вашей подписке. В противном случае выберите следующий самый низкий уровень.

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

    После создания Центра Интернета вещей получите Центр Интернета вещей строка подключения с помощью команды az iot hub connection-string show. Скопируйте весь строка подключения и сохраните его. Он используется при добавлении Центра Интернета вещей в качестве входных данных в задание Stream Analytics.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Добавьте устройство в Центр Интернета вещей с помощью команды 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=
    

Создайте учетную запись для хранения BLOB-объектов

Следующие команды Azure CLI создают учетную запись хранения BLOB, которая используется для результатов задания.

  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 key list .

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

    Это важно

    Запишите ключ доступа для учетной записи хранения Azure. Этот ключ будет использоваться далее в этом кратком руководстве.

  3. Создайте контейнер с именем state для хранения BLOB-объектов с помощью команды az storage container create . Ключ учетной записи хранения используется для авторизации операции для создания контейнера. Дополнительные сведения об авторизации операций с данными с помощью Azure CLI см. в статье "Авторизация доступа к данным blob или очереди с помощью 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 . Этот командлет принимает имя задания, имя входных данных задания, имя группы ресурсов и входные свойства в формате JSON в качестве параметров. В этом примере вы создадите Центр Интернета вещей как источник ввода.

Это важно

  • Замените IOT HUB ACCESS KEY значением ключа общего доступа в строке подключения Центра IOT, сохраненной. Например, если строка подключения IoT-хаба: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=, значение общего ключа доступа: xxxxxxxxxxxxxx=. При замене значения убедитесь, что вы не удаляете символ \ (escape) для " (двойных кавычек).
  • Обновите значение iotHubNamespace в следующей команде, если вы использовали имя, отличное от MyASAIoTHub. Запустите echo $iotHubName , чтобы просмотреть имя Центра Интернета вещей.
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. Этот командлет принимает имя задания, выходное имя задания, имя группы ресурсов, источник данных в формате JSON и тип сериализации в качестве параметров.

Это важно

Замените STORAGEACCOUNTNAME> именем учетной записи хранения Azure и STORAGEACCESSKEY> ключом доступа для учетной записи хранения. Если вы не запишите эти значения, выполните следующие команды, чтобы получить их: echo $storageAccountName и echo $key. При замене значений убедитесь, что символ не удаляется \ (escape) для " (двойные кавычки).

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.

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.

  2. Замените заполнитель в строке 15 всей строкой подключения к устройству Центра Интернета вещей Azure (а не строкой подключения Центра Интернета вещей), сохраненной в начале краткого руководства.

  3. Выберите Выполнить. В выходных данных должны присутствовать показания датчика и сообщения, отправляемые в Центр Интернета вещей.

    Симулятор Raspberry Pi Azure IoT Online

Запуск задания Stream Analytics и просмотр выходных данных

Запустите задание с помощью командлета az stream-analytics job start. Этот командлет принимает имя задания, имя группы ресурсов, режим начала вывода задания и время запуска в качестве параметров. OutputStartMode принимает значения JobStartTime, CustomTime или LastOutputEventTime.

После запуска следующего командлета, если задание запустится, будет возвращено значение True в качестве выходных данных.

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

Дайте ему несколько минут, а затем убедитесь, что выходной файл был создан в контейнере state BLOB.

Снимок экрана, показывающий выходной файл в BLOB-контейнере 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, Центр Интернета вещей и учетную запись хранения Azure.

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

Дальнейшие шаги

В этом кратком руководстве вы развернули простое задание Stream Analytics с помощью Azure CLI. Вы также можете развертывать задания Stream Analytics, используя портал Azure и Visual Studio.

Дополнительные сведения о настройке других источников входных данных и обнаружении в режиме реального времени см. в следующей статье: