Azure Stream Analytics sur IoT EdgeAzure Stream Analytics on IoT Edge

Azure Stream Analytics (ASA) sur IoT Edge encourage les développeurs à déployer une intelligence analytique quasiment en temps réel plus proche des appareils IoT pour leur permettre de déverrouiller la valeur complète des données générées par l’appareil.Azure Stream Analytics (ASA) on IoT Edge empowers developers to deploy near-real-time analytical intelligence closer to IoT devices so that they can unlock the full value of device-generated data. Azure Stream Analytics est conçu pour une latence faible, une résilience, une utilisation efficace de la bande passante et la conformité.Azure Stream Analytics is designed for low latency, resiliency, efficient use of bandwidth, and compliance. Les entreprises peuvent désormais déployer la logique de contrôle proche des opérations industrielles et compléter l’analytique du Big Data effectuée dans le cloud.Enterprises can now deploy control logic close to the industrial operations and complement Big Data analytics done in the cloud.

Azure Stream Analytics sur IoT Edge s’exécute dans le framework Azure IoT Edge.Azure Stream Analytics on IoT Edge runs within the Azure IoT Edge framework. Une fois que le travail est créé dans ASA, vous pouvez le déployer et le gérer à l’aide d’IoT Hub.Once the job is created in ASA, you can deploy and manage it using IoT Hub.

ScénariosScenarios

Diagramme IoT Edge haut niveau

  • Contrôle et commande de faible latence : par exemple, les systèmes de sécurité de fabrication doivent répondre aux données opérationnelles avec une latence très faible.Low-latency command and control: For example, manufacturing safety systems must respond to operational data with ultra-low latency. Avec ASA sur IoT Edge, vous pouvez analyser les données de capteur quasiment en temps réel et émettre des commandes lorsque vous détectez des anomalies pour arrêter une machine ou déclencher des alertes.With ASA on IoT Edge, you can analyze sensor data in near real-time, and issue commands when you detect anomalies to stop a machine or trigger alerts.
  • Connectivité au cloud limitée : les systèmes stratégiques, tels que les équipements miniers à distance, les navires connectés ou les installations de forage offshore, ont besoin d’analyser les données et d’y réagir, même lorsque la connectivité au cloud est intermittente.Limited connectivity to the cloud: Mission critical systems, such as remote mining equipment, connected vessels, or offshore drilling, need to analyze and react to data even when cloud connectivity is intermittent. Avec ASA, votre logique de diffusion en continu s’exécute indépendamment de la connectivité réseau et vous pouvez choisir ce que vous envoyez sur le cloud pour un traitement ultérieur ou pour y être stocké.With ASA, your streaming logic runs independently of the network connectivity and you can choose what you send to the cloud for further processing or storage.
  • Bande passante limitée : le volume de données produites par les moteurs à réaction ou par les voitures connectées peut être tellement important que les données doivent être filtrées ou traitées au préalable avant d’être envoyées vers le cloud.Limited bandwidth: The volume of data produced by jet engines or connected cars can be so large that data must be filtered or pre-processed before sending it to the cloud. À l’aide d’ASA, vous pouvez filtrer ou agréger les données qui doivent être envoyées vers le cloud.Using ASA, you can filter or aggregate the data that needs to be sent to the cloud.
  • Conformité : pour obtenir une conformité réglementaire, certaines données peuvent être rendues anonymes localement ou agrégées avant d’être envoyés vers le cloud.Compliance: Regulatory compliance may require some data to be locally anonymized or aggregated before being sent to the cloud.

Tâches de périphérie dans Azure Stream AnalyticsEdge jobs in Azure Stream Analytics

Qu’est-ce qu’une tâche de périphérie ?What is an "edge" job?

Les tâches ASA Edge s’exécutent dans des conteneurs déployés sur des appareils Azure IoT Edge.ASA Edge jobs run in containers deployed to Azure IoT Edge devices. Elles sont composées de deux parties :They are composed of two parts:

  1. Une partie cloud qui est responsable de la définition de tâche : les utilisateurs définissent des entrées, des sorties, des requêtes et d’autres paramètres (événements en désordre, etc.) dans le cloud.A cloud part that is responsible for job definition: users define inputs, output, query, and other settings (out of order events, etc.) in the cloud.
  2. Un module en cours d’exécution sur vos appareils IoT.A module running on your IoT devices. Il contient le moteur ASA et reçoit la définition de tâche à partir du cloud.It contains the ASA engine and receives the job definition from the cloud.

ASA utilise IoT Hub pour déployer des tâches de périphérie sur les périphériques.ASA uses IoT Hub to deploy edge jobs to device(s). Vous obtiendrez plus d’informations sur le déploiement IoT Edge ici.More information about IoT Edge deployment can be seen here.

Travail de périphérie Azure Stream Analytics

Instructions d’installationInstallation instructions

La procédure générale est décrite dans le tableau suivant.The high-level steps are described in the following table. Vous obtiendrez plus de détails dans les sections suivantes.More details are given in the following sections.

ÉtapeStep NotesNotes
11 Créer un conteneur de stockageCreate a storage container Les conteneurs de stockage sont utilisés pour enregistrer votre définition de tâche, là où ils sont accessibles par vos appareils IoT.Storage containers are used to save your job definition where they can be accessed by your IoT devices.
Vous pouvez réutiliser un conteneur de stockage existant.You can reuse any existing storage container.
22 Créer une tâche ASA EdgeCreate an ASA edge job Créez une nouvelle tâche, sélectionnez Edge en tant qu’environnement d’hébergement.Create a new job, select Edge as hosting environment.
Ces tâches sont créées/gérées à partir du cloud et s’exécutent sur vos propres appareils IoT Edge.These jobs are created/managed from the cloud, and run on your own IoT Edge devices.
33 Configurer votre environnement IoT Edge sur vos appareilsSetup your IoT Edge environment on your device(s) Instructions pour Windows ou Linux.Instructions for Windows or Linux.
44 Déployer ASA sur vos appareils IoT EdgeDeploy ASA on your IoT Edge device(s) La définition de tâche ASA est exportée vers le conteneur de stockage créé précédemment.ASA job definition is exported to the storage container created earlier.

Vous pouvez suivre ce didacticiel pas à pas pour déployer votre première tâche ASA sur IoT Edge.You can follow this step-by-step tutorial to deploy your first ASA job on IoT Edge. La vidéo suivante permet de comprendre le processus d’exécution d’une tâche Stream Analytics sur un appareil IoT Edge :The following video should help you understand the process to run a Stream Analytics job on an IoT edge device:

Créer un conteneur de stockageCreate a storage container

Un conteneur de stockage est nécessaire pour exporter la requête ASA compilée et la configuration de tâche.A storage container is required in order to export the ASA compiled query and the job configuration. Il est utilisé pour configurer l’image ASA Docker avec votre requête spécifique.It is used to configure the ASA Docker image with your specific query.

  1. Suivez ces instructions pour créer un compte de stockage à partir du portail Azure.Follow these instructions to create a storage account from the Azure portal. Vous pouvez conserver toutes les options par défaut pour utiliser ce compte avec ASA.You can keep all default options to use this account with ASA.
  2. Dans le compte de stockage nouvellement créé, créez un conteneur de stockage d’objets blob :In the newly created storage account, create a blob storage container:
    1. Cliquez sur BLOB, puis + Conteneur » .Click on Blobs, then + Container.
    2. Entrez un nom et conservez le conteneur en tant que Privé.Enter a name and keep the container as Private.

Créer une tâche ASA EdgeCreate an ASA Edge job

Notes

Ce didacticiel est consacré à la création d’un travail ASA à l’aide du portail Azure.This tutorial focuses on ASA job creation using Azure portal. Vous pouvez également utiliser le plug-in Visual Studio pour créer un travail ASA Edge.You can also use Visual Studio plugin to create an ASA Edge job

  1. Depuis le portail Azure, créez une nouvelle tâche Stream Analytics.From the Azure portal, create a new "Stream Analytics job". Lien direct pour créer une nouvelle tâche ASA.Direct link to create a new ASA job here.

  2. Dans l’écran de création, sélectionnez Edge en tant qu’environnement d’hébergement (voir l’illustration suivante)In the creation screen, select Edge as hosting environment (see the following picture)

    Créer une tâche Stream Analytics sur Edge

  3. Définition de la tâcheJob Definition

    1. Définir le(s) flux d’entrée.Define Input Stream(s). Définissez un ou plusieurs flux d’entrée pour votre tâche.Define one or several input streams for your job.
    2. Définissez les données de référence (facultatif).Define Reference data (optional).
    3. Définir le(s) flux de sortie.Define Output Stream(s). Définissez un ou plusieurs flux de sortie pour votre tâche.Define one or several outputs streams for your job.
    4. Définir la requête.Define query. Définissez la requête ASA dans le cloud à l’aide de l’éditeur inclus.Define the ASA query in the cloud using the inline editor. Le compilateur vérifie automatiquement la syntaxe prise en charge par ASA Edge.The compiler automatically checks the syntax enabled for ASA edge. Vous pouvez également tester votre requête en téléchargeant des exemples de données.You can also test your query by uploading sample data.
  4. Définissez les informations du conteneur de stockage dans le menu Paramètres IoT Edge.Set the storage container information in the IoT Edge settings menu.

  5. Définir des paramètres facultatifsSet optional settings

    1. Ordre des événements.Event ordering. Vous pouvez configurer une stratégie d’arrivée en désordre dans le portail.You can configure out-of-order policy in the portal. La documentation est disponible ici.Documentation is available here.
    2. Paramètres régionaux.Locale. Définissez le format d’internationalisation.Set the internalization format.

Notes

Lors de la création d’un déploiement, ASA exporte la définition de tâche dans un conteneur de stockage.When a deployment is created, ASA exports the job definition to a storage container. Cette définition de tâche reste la même pendant la durée d’un déploiement.This job definition remain the same during the duration of a deployment. Par conséquent, si vous souhaitez mettre à jour une tâche en cours d’exécution en périphérie, vous devez modifier la tâche dans ASA, puis créer un nouveau déploiement dans IoT Hub.As a consequence, if you want to update a job running on the edge, you need to edit the job in ASA, and then create a new deployment in IoT Hub.

Configurer votre environnement IoT Edge sur vos appareilsSet up your IoT Edge environment on your device(s)

Les tâches de périphérie peuvent être déployées sur les appareils exécutant Azure IoT Edge.Edge jobs can be deployed on devices running Azure IoT Edge. Pour ce faire, vous devez procéder comme suit :For this, you need to follow these steps:

  • Créez un IoT Hub.Create an Iot Hub.
  • Installez le runtime Docker et IoT Edge sur vos appareils de périphérie.Install Docker and IoT Edge runtime on your edge devices.
  • Définissez vos appareils comme Appareils IoT Edge dans IoT Hub.Set your devices as IoT Edge devices in IoT Hub.

Ces étapes sont décrites dans la documentation IoT Edge pour Windows ou Linux.These steps are described in the IoT Edge documentation for Windows or Linux.

Déployer ASA sur vos appareils IoT EdgeDeployment ASA on your IoT Edge device(s)

Ajouter ASA à votre déploiementAdd ASA to your deployment
  • Dans le portail Azure, ouvrez IoT Hub, accédez à IoT Edge, puis cliquez sur l’appareil que vous souhaitez cibler pour ce déploiement.In the Azure portal, open IoT Hub, navigate to IoT Edge and click on the device you want to target for this deployment.
  • Sélectionnez Set modules (Définir les modules), puis sélectionnez + Ajouter et choisissez Azure Stream Analytics Module (Module Azure Stream Analytics).Select Set modules, then select + Add and choose Azure Stream Analytics Module.
  • Sélectionnez l’abonnement et la tâche ASA Edge que vous avez créée.Select the subscription and the ASA Edge job that you created. Cliquez sur Enregistrer.Click Save. Ajouter un module ASA dans votre déploiementAdd ASA module in your deployment

Notes

Dans cette étape, ASA crée un dossier nommé « EdgeJobs » dans le conteneur de stockage (s’il n’existe pas déjà).During this step, ASA creates a folder named "EdgeJobs" in the storage container (if it does not exist already). Pour chaque déploiement, un nouveau sous-dossier est créé dans le dossier « EdgeJobs ».For each deployment, a new subfolder is created in the "EdgeJobs" folder. Pour déployer votre projet sur les appareils en périphérie, ASA crée une signature d’accès partagé (SAP) pour le fichier de définition de tâche.In order to deploy your job to edge devices, ASA creates a shared access signature (SAS) for the job definition file. La clé SAP est transmise de façon sécurisée aux appareils IoT Edge à l’aide de jumeaux d’appareil.The SAS key is securely transmitted to the IoT Edge devices using device twin. La durée avant expiration de cette clé est de trois ans à partir du jour de sa création.The expiration of this key is three years from the day of its creation.

Pour plus d’informations sur les déploiements IoT Edge, consultez cette page.For more information about IoT Edge deployments, see to this page.

Configurer des itinérairesConfigure routes

IoT Edge offre un moyen de router les messages entre les modules et entre les modules et IoT Hub de façon déclarative.IoT Edge provides a way to declaratively route messages between modules, and between modules and IoT Hub. La syntaxe complète est décrite ici.The full syntax is described here. Les noms des entrées et sorties créés dans la tâche ASA peuvent être utilisés en tant que points de terminaison pour le routage.Names of the inputs and outputs created in the ASA job can be used as endpoints for routing.

ExemplesExample
{
    "routes": {
        "sensorToAsa":   "FROM /messages/modules/tempSensor/* INTO BrokeredEndpoint(\"/modules/ASA/inputs/temperature\")",
        "alertsToCloud": "FROM /messages/modules/ASA/* INTO $upstream",
        "alertsToReset": "FROM /messages/modules/ASA/* INTO BrokeredEndpoint(\"/modules/tempSensor/inputs/control\")"
    }
}

Cet exemple montre les itinéraires pour le scénario décrit dans l’image suivante.This example shows the routes for the scenario described in the following picture. Il contient une tâche de périphérie appelée ASA, une entrée nommée temperature et une sortie nommée alert.It contains an edge job called "ASA", with an input named "temperature" and an output named "alert". Exemple de diagramme de routage des messagesDiagram example of message routing

Cet exemple définit les itinéraires suivants :This example defines the following routes:

  • Tous les messages du module tempSensor sont envoyés au module nommé ASA à l’entrée nommée temperature.Every message from the tempSensor is sent to the module named ASA to the input named temperature,
  • Toutes les sorties du module ASA sont envoyées au IoT Hub lié à cet appareil ($upstream).All outputs of ASA module are sent to the IoT Hub linked to this device ($upstream),
  • Toutes les sorties du module ASA sont envoyées au point de terminaison control de tempSensor.All outputs of ASA module are sent to the control endpoint of the tempSensor.

Informations techniquesTechnical information

Limitations actuelles pour les tâches IoT Edge par rapport aux tâches cloudCurrent limitations for IoT Edge jobs compared to cloud jobs

L’objectif est d’obtenir la parité entre les tâches IoT Edge et les tâches cloud.The goal is to have parity between IoT Edge jobs and cloud jobs. La plupart des fonctionnalités du langage de requête SQL sont prises en charge, ce qui permet d’exécuter la même logique dans le cloud et IoT Edge.Most SQL query language features are supported, enabling to run the same logic on both cloud and IoT Edge. Cependant, les fonctionnalités suivantes ne sont pas encore prises en charge pour les tâches de périphérie :However the following features are not yet supported for edge jobs:

  • Fonctions définies par l’utilisateur en JavaScript.User-defined functions (UDF) in JavaScript. Des fonctions définies par l’utilisateur sont disponibles en C# pour les tâches IoT Edge (préversion).UDF are available in C# for IoT Edge jobs (preview).
  • Agrégats définis par l’utilisateur – (UDA).User-defined aggregates (UDA).
  • Fonctions Azure MLAzure ML functions
  • Utilisation de plus de 14 agrégats dans une seule étape.Using more than 14 aggregates in a single step.
  • Format AVRO pour l’entrée/sortie.AVRO format for input/output. À ce stade, seuls les formats CSV et JSON sont pris en charge.At this time, only CSV and JSON are supported.
  • Les opérateurs SQL suivants :The following SQL operators:
    • PARTITION BYPARTITION BY
    • GetMetadataPropertyValueGetMetadataPropertyValue

Runtime et conditions matérielles requisesRuntime and hardware requirements

Pour exécuter ASA sur IoT Edge, vous avez besoin d’appareils pouvant exécuter Azure IoT Edge.To run ASA on IoT Edge, you need devices that can run Azure IoT Edge.

ASA et Azure IoT Edge utilisent des conteneurs Docker pour fournir une solution portable s’exécutant sur plusieurs systèmes d’exploitation hôtes (Windows, Linux).ASA and Azure IoT Edge use Docker containers to provide a portable solution that runs on multiple host operating systems (Windows, Linux).

ASA sur IoT Edge est mis à disposition sous forme d’images Windows et Linux, s’exécutant sur les architectures x86-64 ou ARM (Advanced RISC Machines).ASA on IoT Edge is made available as Windows and Linux images, running on both x86-64 or ARM (Advanced RISC Machines) architectures.

Entrée et sortieInput and output

Flux d’entrée et de sortieInput and Output Streams

Les tâches ASA Edge peuvent obtenir des entrées et sorties à partir d’autres modules qui s’exécutent sur des appareils IoT Edge.ASA Edge jobs can get inputs and outputs from other modules running on IoT Edge devices. Pour vous connecter à partir de modules spécifiques et à ces derniers, vous pouvez définir la configuration de routage au moment du déploiement.To connect from and to specific modules, you can set the routing configuration at deployment time. Pour plus d’informations, consultez la documentation de composition du module IoT Edge.More information is described on the IoT Edge module composition documentation.

Les formats CSV et JSON sont pris en charge pour les entrées et sorties.For both inputs and outputs, CSV and JSON formats are supported.

Pour chaque flux d’entrée et de sortie que vous créez dans votre tâche ASA, un point de terminaison correspondant est créé dans votre module déployé.For each input and output stream you create in your ASA job, a corresponding endpoint is created on your deployed module. Ces points de terminaison sont utilisables dans les itinéraires de votre déploiement.These endpoints can be used in the routes of your deployment.

Actuellement, les seuls types d’entrée et de sortie de flux pris en charge sont Edge Hub.At present, the only supported stream input and stream output types are Edge Hub. L’entrée de référence prend en charge le type de fichier de référence.Reference input supports reference file type. D’autres sorties peuvent être atteintes à l’aide d’un travail cloud en aval.Other outputs can be reached using a cloud job downstream. Par exemple, un travail Stream Analytics hébergé dans Edge envoie la sortie à Edge Hub, qui peuvent ensuite envoyer la sortie à IoT Hub.For example, a Stream Analytics job hosted in Edge sends output to Edge Hub, which can then send output to IoT Hub. Vous pouvez utiliser un deuxième travail Azure Stream Analytics Analytique hébergé sur le cloud avec une entrée d’IoT Hub et une sortie vers Power BI ou un autre type de sortie.You can use a second cloud hosted Azure Stream Analytics job with input from IoT Hub and output to Power BI or another output type.

Données de référenceReference data

Les données de référence (également appelées « tables de choix ») sont un jeu de données finies, statiques ou variant lentement au fil du temps par nature.Reference data (also known as a lookup table) is a finite data set that is static or slow changing in nature. Elles sont utilisées pour effectuer des recherches ou pour effectuer des mises en corrélation avec votre flux de données.It is used to perform a lookup or to correlate with your data stream. Pour utiliser des données de référence dans votre tâche Azure Stream Analytics, vous utiliserez généralement une JOINTURE de données de référence dans votre requête.To make use of reference data in your Azure Stream Analytics job, you will generally use a Reference Data JOIN in your query. Pour plus d’informations, consultez Utiliser des données de référence pour effectuer des recherches dans Stream Analytics.For more information, see the Using reference data for lookups in Stream Analytics.

Seules les données de référence locales sont prises en charge.Only local reference data is supported. Lorsqu'une tâche est déployée sur un appareil IoT Edge, il charge les données de référence à partir du chemin de fichier défini par l'utilisateur.When a job is deployed to IoT Edge device, it loads reference data from the user defined file path.

Pour créer une tâche avec des données de référence sur Edge :To create a job with reference data on Edge:

  1. Créez une nouvelle entrée pour votre tâche.Create a new input for your job.

  2. Choisissez données de référence pour le type de source.Choose Reference data as the Source Type.

  3. Préparez un fichier de données de référence sur l'appareil.Have a reference data file ready on the device. Pour un conteneur Windows, placez le fichier de données de référence sur le lecteur local et partagez ce lecteur avec le conteneur Docker.For a Windows container, put the reference data file on the local drive and share the local drive with the Docker container. Pour un conteneur Linux, créez un volume Docker et renseignez le fichier de données sur le volume.For a Linux container, create a Docker volume and populate the data file to the volume.

  4. Définissez le chemin d’accès du fichier.Set the file path. Pour un système d’exploitation hôte Windows et un conteneur Windows, utilisez le chemin d’accès absolu : E:\<PathToFile>\v1.csv.For Windows Host OS and Windows container, use the absolute path: E:\<PathToFile>\v1.csv. Pour un système d’exploitation hôte Windows et un conteneur Linux ou un système d’exploitation Linux et un conteneur Linux, utilisez le chemin d’accès du volume : <VolumeName>/file1.txt.For a Windows Host OS and Linux container or a Linux OS and Linux container, use the path in the volume: <VolumeName>/file1.txt.

Nouvelle entrée de données de référence pour la tâche Azure Stream Analytics sur IoT Edge

Les données de référence situées sur la mise à jour d'IoT Edge sont déclenchées par un déploiement.The reference data on IoT Edge update is triggered by a deployment. Une fois déclenché, le module ASA sélectionne les données mises à jour sans arrêter la tâche en cours.Once triggered, the ASA module picks the updated data without stopping the running job.

Deux méthodes sont disponibles pour mettre à jour les données de référence :There are two ways to update the reference data:

  • En mettant à jour le chemin des données de référence de votre tâche ASA à partir du portail AzureUpdate reference data path in your ASA job from Azure portal.
  • En mettant à jour le déploiement IoT EdgeUpdate the IoT Edge deployment.

Licence et mentions tiercesLicense and third-party notices

Obtenir de l’aideGet help

Pour obtenir une assistance, consultez le forum Azure Stream Analytics.For further assistance, try the Azure Stream Analytics forum.

Étapes suivantesNext steps