Avvio rapido: Creare un processo di Analisi di flusso di Azure con l'interfaccia della riga di comando di Azure
In questa guida introduttiva si userà l'interfaccia della riga di comando di Azure per definire un processo di Analisi di flusso che filtra i messaggi dei sensori in tempo reale con una lettura della temperatura maggiore di 27. Il processo di Analisi di flusso legge i dati da hub IoT, trasforma i dati e scrive i dati di output in un contenitore in un archivio BLOB. I dati di input usati in questa guida introduttiva sono generati da un simulatore online Raspberry Pi.
Operazioni preliminari
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere con l'interfaccia della riga di comando di Azure.
Quando richiesto, installare l'estensione dell'interfaccia della riga di comando di Azure al primo uso. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Crea un gruppo di risorse. Tutte le risorse di Azure devono essere distribuite in un gruppo di risorse. I gruppi di risorse consentono di organizzare e gestire le risorse di Azure correlate.
Per questo argomento di avvio rapido, creare un gruppo di risorse denominato streamanalyticsrg nell'area eastus con il comando az group create seguente:
az group create --name streamanalyticsrg --location eastus
Preparare i dati di input
Prima di definire il processo di Analisi di flusso, è necessario preparare i dati che verranno usati come input del processo. I comandi dell'interfaccia della riga di comando di Azure seguenti preparano i dati di input richiesti dal processo.
Creare un hub IoT con il comando az iot hub create. Questo esempio crea un hub IoT denominato MyASAIoTHub. Poiché hub IoT nomi devono essere univoci a livello globale, potrebbe essere necessario modificare il nome se è già stato preso. Impostare lo SKU su F1 per usare il livello gratuito, se disponibile con la sottoscrizione. In caso contrario, scegliere il successivo livello più basso.
iotHubName=MyASAIoTHub az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
Dopo aver creato l'hub IoT, ottenere il hub IoT stringa di connessione usando il comando az iot hub connection-string show. Copiare l'intero stringa di connessione e salvarlo. Viene usato durante l'aggiunta del hub IoT come input al processo di Analisi di flusso.
az iot hub connection-string show --hub-name $iotHubName
Aggiungere un dispositivo all'hub IoT usando il comando az iothub device-identity create. Questo esempio crea un dispositivo denominato MyASAIoTDevice.
az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
Ottenere il dispositivo stringa di connessione usando il comando az iot hub device-identity connection-string show. Copiare l'intera stringa di connessione e salvarla per quando si creerà il simulatore Raspberry Pi.
az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
Esempio di output:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
Creare un account di archiviazione BLOB
I comandi dell'interfaccia della riga di comando di Azure seguenti creano un account di archiviazione BLOB usato per l'output del processo.
Creare un account di archiviazione per utilizzo generico con il comando az storage account create. L'account di archiviazione per utilizzo generico può essere usato per tutti e quattro i servizi: BLOB, file, tabelle e code.
storageAccountName="asatutorialstorage$RANDOM" az storage account create \ --name $storageAccountName \ --resource-group streamanalyticsrg \ --location eastus \ --sku Standard_ZRS \ --encryption-services blob
Per ottenere la chiave dell'account di archiviazione, eseguire il comandoaz storage account keys list.
key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv) echo $key
Importante
Prendere nota della chiave di accesso per l'account di archiviazione di Azure. Questa chiave verrà usata più avanti in questa guida introduttiva.
Creare un contenitore denominato
state
per l'archiviazione di BLOB con il comando az storage container create . La chiave dell'account di archiviazione consente autorizzare l'operazione di creazione del contenitore. Per altre informazioni sull'autorizzazione delle operazioni sui dati con l'interfaccia della riga di comando di Azure, vedere Autorizzare l'accesso ai dati di BLOB o code con l'interfaccia della riga di comando di Azure.az storage container create \ --account-name $storageAccountName \ --name state \ --account-key $key \ --auth-mode key
Creare un processo di Analisi di flusso.
Creare un processo di Analisi di flusso con il comando 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"
Configurare l'input per il processo
Aggiungere un input al processo tramite il cmdlet az stream-analytics input. Questo cmdlet accetta il nome del processo, il nome dell'input del processo, il nome del gruppo di risorse e le proprietà di input in formato JSON come parametri. In questo esempio come input verrà creato un hub IoT.
Importante
- Sostituire
IOT HUB ACCESS KEY
con il valore di Chiave di accesso condiviso nell'hub IOT stringa di connessione salvato. Ad esempio, se l'hub IOT stringa di connessione è :HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=
, il valore della chiave di accesso condiviso èxxxxxxxxxxxxxx=
. Quando si sostituisce il valore, assicurarsi di non eliminare\
(carattere di escape) per"
(virgolette doppie). - Aggiornare il valore di
iotHubNamespace
nel comando seguente se è stato usato un nome diverso daMyASAIoTHub
. Eseguireecho $iotHubName
per visualizzare il nome del hub IoT.
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"
Configurare l'output per il processo
Aggiungere un output al processo tramite il cmdlet az stream-analytics output create. Questo cmdlet accetta il nome del processo, il nome dell'output del processo, il nome del gruppo di risorse, l'origine dati in formato JSON e il tipo di serializzazione come parametri.
Importante
Sostituire STORAGEACCOUNTNAME>
con il nome dell'account Archiviazione di Azure e STORAGEACCESSKEY>
con la chiave di accesso per l'account di archiviazione. Se questi valori non sono stati annotato, eseguire i comandi seguenti per ottenerli: echo $storageAccountName
e echo $key
. Quando si sostituiscono i valori, assicurarsi di non eliminare \
(carattere di escape) per "
(virgolette doppie).
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
Definire la query di trasformazione
Aggiungere una trasformazione al processo tramite il cmdlet 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"
Eseguire il simulatore IoT
Aprire il simulatore online Azure IoT Raspberry Pi.
Sostituire il segnaposto nella riga 15 con l'intero hub IoT di Azure Device stringa di connessione (non hub IoT stringa di connessione) salvato all'inizio della guida introduttiva.
Selezionare Esegui. L'output mostra i dati del sensore e i messaggi inviati all'hub IoT.
Avviare il processo di Analisi di flusso e controllare l'output
Avviare il processo usando il cmdlet az stream-analytics job start. Questo cmdlet accetta il nome del processo, il nome del gruppo di risorse, la modalità di avvio dell'output e l'ora di inizio come parametri. OutputStartMode
accetta i valori JobStartTime
, CustomTime
o LastOutputEventTime
.
Dopo aver eseguito il cmdlet seguente, verrà restituito True
come output se il processo viene avviato.
az stream-analytics job start \
--resource-group streamanalyticsrg \
--name streamanalyticsjob \
--output-start-mode JobStartTime
Assegnare alcuni minuti e quindi verificare che nel contenitore BLOB venga creato state
un file di output.
Scaricare e aprire il file per visualizzare diverse voci simili a quella seguente:
{
"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
}
}
Pulire le risorse
Eliminare il gruppo di risorse, che eliminerà tutte le risorse nel gruppo di risorse, tra cui processo di Analisi di flusso, hub IoT e account Archiviazione di Azure.
az group delete \
--name streamanalyticsrg \
--no-wait
Passaggi successivi
In questa guida di avvio rapido è stato distribuito un semplice processo di Analisi di flusso con l'interfaccia della riga di comando di Azure. È anche possibile distribuire processi di Analisi di flusso usando il portale di Azure e Visual Studio.
Per informazioni sulla configurazione di altre origini di input e sull'esecuzione del rilevamento in tempo reale, continuare con l'articolo seguente: