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

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

Подготовка к работе

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

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Создать группу ресурсов. Все ресурсы 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=
    

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

Следующие команды 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 keys 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 см. в статье Авторизация доступа к данным большого двоичного объекта или очереди с помощью 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 Simulator

Запуск задания 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-объектов.

Screenshot showing the output file in the State blob container.

Скачайте и откройте файл, чтобы просмотреть несколько записей, аналогичных следующим:

{
    "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.

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