Azure Stream Analytics på IoT EdgeAzure Stream Analytics on IoT Edge

Med hjälp av Azure Stream Analytics (ASA) på IoT Edge kan utvecklare distribuera nära realtid analytisk intelligens närmare IoT-enheter så att de kan låsa upp hela värdet av data som genereras av enheten.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 har utformats för låg latens, elasticitet och effektiv användning av bandbredd och efterlevnad.Azure Stream Analytics is designed for low latency, resiliency, efficient use of bandwidth, and compliance. Företag kan nu distribuera logik nära industriell verksamhet och komplettera analyser av Stordata i molnet.Enterprises can now deploy control logic close to the industrial operations and complement Big Data analytics done in the cloud.

Azure Stream Analytics på IoT Edge som körs inom den Azure IoT Edge framework.Azure Stream Analytics on IoT Edge runs within the Azure IoT Edge framework. När jobbet har skapats i ASA, kan du distribuera och hantera den med hjälp av IoT Hub.Once the job is created in ASA, you can deploy and manage it using IoT Hub.

ScenarierScenarios

Översiktsdiagram över IoT Edge

  • Låg latens kommando och kontroll: Till exempel måste tillverkar säkerhetssystem svara på driftdata med extremt låg latens.Low-latency command and control: For example, manufacturing safety systems must respond to operational data with ultra-low latency. Du kan analysera sensor data i realtid och skicka kommandon när du upptäcker avvikelser för att stoppa en virtuell dator eller utlösa aviseringar med ASA på IoT Edge.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.
  • Begränsad anslutning till molnet: Uppdragskritiska kritiska system som fjärranslutna utvinningsstrukturen utrustning, anslutna fartyg eller öppet hav Detaljgranskning måste du analysera och reagera på data även om molnet anslutningen bryts.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. Strömmande logik körs oberoende av nätverksanslutningen med ASA, och du kan välja vad du skickar till molnet för vidare bearbetning eller lagring.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.
  • Begränsad bandbredd: Mängden data som produceras av jet motorer eller anslutna bilar kan vara så stora data måste vara filtreras eller bearbetas före innan de skickas till molnet.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. Med ASA, kan du filtrera eller aggregera data som måste skickas till molnet.Using ASA, you can filter or aggregate the data that needs to be sent to the cloud.
  • Efterlevnad: Regelefterlevnad kan kräva vissa data lokalt anonyma eller aggregeras innan den skickas till molnet.Compliance: Regulatory compliance may require some data to be locally anonymized or aggregated before being sent to the cloud.

Edge-jobb i Azure Stream AnalyticsEdge jobs in Azure Stream Analytics

Vad är ett ”edge”-jobb?What is an "edge" job?

ASA Edge-jobb som körs i behållare som distribueras till Azure IoT Edge-enheter.ASA Edge jobs run in containers deployed to Azure IoT Edge devices. De är består av två delar:They are composed of two parts:

  1. En del i molnet som ansvarar för jobbdefinitionen: användare definiera indata, utdata, fråga och andra inställningar (oordnade händelser, osv.) i molnet.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. En modul som körs på dina IoT-enheter.A module running on your IoT devices. Det innehåller ASA-motorn och tar emot jobbdefinitionen från molnet.It contains the ASA engine and receives the job definition from the cloud.

ASA använder IoT Hub för att distribuera edge-jobb till enheter.ASA uses IoT Hub to deploy edge jobs to device(s). Mer information om IoT Edge-distribution finns här.More information about IoT Edge deployment can be seen here.

Azure Stream Analytics Edge-jobb

InstallationsinstruktionerInstallation instructions

De övergripande stegen beskrivs i följande tabell.The high-level steps are described in the following table. Mer information ges i följande avsnitt.More details are given in the following sections.

StegStep AnteckningarNotes
11 Skapa en lagringsbehållareCreate a storage container Storage-behållare används för att spara din jobbdefinition där de kan användas av dina IoT-enheter.Storage containers are used to save your job definition where they can be accessed by your IoT devices.
Du kan återanvända eventuella befintliga lagringsbehållare.You can reuse any existing storage container.
22 Skapa ett ASA edge-jobbCreate an ASA edge job Skapa ett nytt jobb väljer Edge som värdmiljö.Create a new job, select Edge as hosting environment.
Dessa jobb finns skapas/hanteras från molnet och kör på dina egna IoT Edge-enheter.These jobs are created/managed from the cloud, and run on your own IoT Edge devices.
33 Konfigurera din IoT Edge-miljö på dina enheterSetup your IoT Edge environment on your device(s) Anvisningar om hur Windows eller Linux.Instructions for Windows or Linux.
44 Distribuera ASA på IoT Edge-enheterDeploy ASA on your IoT Edge device(s) ASA jobbdefinitionen exporteras till den lagringsbehållare som skapades tidigare.ASA job definition is exported to the storage container created earlier.

Du kan följa den här stegvisa självstudien att distribuera ditt första ASA-jobb på IoT Edge.You can follow this step-by-step tutorial to deploy your first ASA job on IoT Edge. Följande videoklipp hjälper dig att förstå processen för att köra ett Stream Analytics-jobb på en IoT edge-enhet:The following video should help you understand the process to run a Stream Analytics job on an IoT edge device:

Skapa en lagringsbehållareCreate a storage container

En lagringsbehållare krävs för att exportera ASA kompileras frågan och jobbkonfigurationen.A storage container is required in order to export the ASA compiled query and the job configuration. Den används för att konfigurera ASA Docker-avbildning med din specifika fråga.It is used to configure the ASA Docker image with your specific query.

  1. Följ instruktionerna att skapa ett lagringskonto från Azure-portalen.Follow these instructions to create a storage account from the Azure portal. Du kan behålla alla standardalternativ för att använda det här kontot med ASA.You can keep all default options to use this account with ASA.
  2. Skapa en blob storage-behållare i det nyligen skapade lagringskontot:In the newly created storage account, create a blob storage container:
    1. Klicka på Blobar, sedan + behållare.Click on Blobs, then + Container.
    2. Ange ett namn och hålla behållaren som privata.Enter a name and keep the container as Private.

Skapa ett ASA Edge-jobbCreate an ASA Edge job

Anteckning

Den här självstudien fokuserar på skapande av ASA-jobb med hjälp av Azure portal.This tutorial focuses on ASA job creation using Azure portal. Du kan också använder Visual Studio-plugin-programmet för att skapa ett ASA Edge-jobbYou can also use Visual Studio plugin to create an ASA Edge job

  1. Skapa en ny ”Stream Analytics-jobbet” från Azure-portalen.From the Azure portal, create a new "Stream Analytics job". Direktlänk till att skapa ett nytt ASA-jobb här.Direct link to create a new ASA job here.

  2. Skapa-skärmen väljer du Edge som värdmiljö (se nedan)In the creation screen, select Edge as hosting environment (see the following picture)

    Skapa Stream Analytics-jobb i Microsoft Edge

  3. JobbdefinitionJob Definition

    1. Definiera inkommande Stream(s) .Define Input Stream(s). Definiera en eller flera inkommande dataströmmar för jobbet.Define one or several input streams for your job.
    2. Definiera referensdata (valfritt).Define Reference data (optional).
    3. Definiera utdata Stream(s) .Define Output Stream(s). Definiera en eller flera strömmar av utdata för jobbet.Define one or several outputs streams for your job.
    4. Definiera fråga.Define query. Definiera ASA-frågan i molnet med hjälp av infogade-redigeraren.Define the ASA query in the cloud using the inline editor. Kompilatorn kontrollerar automatiskt den syntax som aktiverats för ASA edge.The compiler automatically checks the syntax enabled for ASA edge. Du kan också testa frågan genom att ladda upp exempeldata.You can also test your query by uploading sample data.
  4. Ange information för storage-behållaren i den IoT Edge-inställningar menyn.Set the storage container information in the IoT Edge settings menu.

  5. Ange valfria inställningarSet optional settings

    1. Händelseordning.Event ordering. Du kan konfigurera princip för out-ordning i portalen.You can configure out-of-order policy in the portal. Dokumentation finns här.Documentation is available here.
    2. Nationella inställningar.Locale. Ange internalization format.Set the internalization format.

Anteckning

När en distribution har skapats, exporterar ASA jobbdefinitionen till en lagringsbehållare.When a deployment is created, ASA exports the job definition to a storage container. Den här jobbdefinitionen förblir samma under en distribution.This job definition remain the same during the duration of a deployment. Det betyder om du vill uppdatera ett jobb som körs på gränsen måste redigera jobbet i ASA och skapa en ny distribution i 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.

Konfigurera din IoT Edge-miljö på dina enheterSet up your IoT Edge environment on your device(s)

Edge-jobb kan distribueras på enheter som kör Azure IoT Edge.Edge jobs can be deployed on devices running Azure IoT Edge. För detta måste du följa dessa steg:For this, you need to follow these steps:

  • Skapa en Iot-hubb.Create an Iot Hub.
  • Installera Docker och IoT Edge-körningen på dina gränsenheter.Install Docker and IoT Edge runtime on your edge devices.
  • Ange dina enheter som IoT Edge-enheter i IoT Hub.Set your devices as IoT Edge devices in IoT Hub.

De här stegen beskrivs i dokumentationen för IoT Edge Windows eller Linux.These steps are described in the IoT Edge documentation for Windows or Linux.

Distribution ASA på IoT Edge-enheterDeployment ASA on your IoT Edge device(s)

Lägg till ASA för din distributionAdd ASA to your deployment
  • Öppna IoT Hub i Azure-portalen, gå till IoT Edge och klicka på den enhet som du vill använda för den här distributionen.In the Azure portal, open IoT Hub, navigate to IoT Edge and click on the device you want to target for this deployment.
  • Välj ange moduleroch välj sedan + Lägg till och välj Azure Stream Analytics-modulen.Select Set modules, then select + Add and choose Azure Stream Analytics Module.
  • Välj prenumerationen och ASA Edge-jobb som du skapade.Select the subscription and the ASA Edge job that you created. Klicka på Spara.Click Save. Lägg till ASA-modul i distributionenAdd ASA module in your deployment

Anteckning

Det här steget skapar ASA en mapp med namnet ”EdgeJobs” i storage-behållare (om den inte redan finns).During this step, ASA creates a folder named "EdgeJobs" in the storage container (if it does not exist already). För varje distribution skapas en ny undermapp i mappen ”EdgeJobs”.For each deployment, a new subfolder is created in the "EdgeJobs" folder. När du distribuerar jobbet till IoT Edge-enheter skapar ASA en signatur för delad åtkomst (SAS) för definitionsfilen för jobbet.When you deploy your job to IoT Edge devices, ASA creates a shared access signature (SAS) for the job definition file. SAS-nyckeln skickas på ett säkert sätt till IoT Edge-enheter med hjälp av enhetstvillingen.The SAS key is securely transmitted to the IoT Edge devices using device twin. Förfallodatum för den här nyckeln är tre år från dag då skapades.The expiration of this key is three years from the day of its creation. När du uppdaterar ett IoT Edge-jobb, SAS ändras, men kommer inte att ändra versionsnumret för avbildningen.When you update an IoT Edge job, the SAS will change, but the image version will not change. När du uppdatera, följ arbetsflödet och ett meddelande som är inloggad på enheten.Once you Update, follow the deployment workflow, and an update notification is logged on the device.

Mer information om IoT Edge-distributioner finns i så här den här sidan.For more information about IoT Edge deployments, see to this page.

Konfigurera vägarConfigure routes

IoT Edge är ett sätt att deklarativt dirigera meddelanden mellan moduler och mellan moduler och IoT Hub.IoT Edge provides a way to declaratively route messages between modules, and between modules and IoT Hub. Den fullständiga syntaxen beskrivs här.The full syntax is described here. Namnen på indata och utdata som skapats i ASA-jobbet kan användas som slutpunkter för routning.Names of the inputs and outputs created in the ASA job can be used as endpoints for routing.

ExempelExample
{
    "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\")"
    }
}

Det här exemplet visar vägar i det scenario som beskrivs i följande bild.This example shows the routes for the scenario described in the following picture. Den innehåller en edge-jobb som heter ”ASA”, med indata med namnet ”temperatur” och utdata med namnet ”avisering”.It contains an edge job called "ASA", with an input named "temperature" and an output named "alert". Diagram över exempel på meddelanderoutningDiagram example of message routing

Det här exemplet definierar följande vägar:This example defines the following routes:

  • Alla meddelanden från den tempSensor skickas till modulen med namnet ASA till indata med namnet temperatur,Every message from the tempSensor is sent to the module named ASA to the input named temperature,
  • Alla utdata för ASA modulen skickas till IoT-hubben som är länkad till den här enheten (uppströms$)All outputs of ASA module are sent to the IoT Hub linked to this device ($upstream),
  • Alla utdata för ASA modulen skickas till den kontroll slutpunkten för den tempSensor.All outputs of ASA module are sent to the control endpoint of the tempSensor.

Teknisk informationTechnical information

Aktuella begränsningar för IoT Edge-jobb jämfört med molnjobbCurrent limitations for IoT Edge jobs compared to cloud jobs

Målet är att har paritet mellan IoT Edge-jobb och molnjobb.The goal is to have parity between IoT Edge jobs and cloud jobs. De flesta SQL-fråga språkfunktioner stöds, aktivering för att köra samma logik på både i molnet och IoT Edge.Most SQL query language features are supported, enabling to run the same logic on both cloud and IoT Edge. Men de följande funktionerna stöds inte ännu för edge-jobb:However the following features are not yet supported for edge jobs:

  • Användardefinierade funktioner (UDF) i JavaScript.User-defined functions (UDF) in JavaScript. UDF är tillgängliga i C# för IoT Edge-jobb (förhandsversion).UDF are available in C# for IoT Edge jobs (preview).
  • Användardefinierade aggregeringar (UDA).User-defined aggregates (UDA).
  • Azure ML-funktionerAzure ML functions
  • Med hjälp av mer än 14 aggregat i ett enda steg.Using more than 14 aggregates in a single step.
  • AVRO-format för indata/utdata.AVRO format for input/output. För närvarande stöds endast CSV och JSON.At this time, only CSV and JSON are supported.
  • Följande SQL-operatorer:The following SQL operators:
    • PARTITION BYPARTITION BY
    • GetMetadataPropertyValueGetMetadataPropertyValue

Runtime-och maskinvarukravRuntime and hardware requirements

Om du vill köra ASA på IoT Edge, behöver du enheter som kan köra Azure IoT Edge.To run ASA on IoT Edge, you need devices that can run Azure IoT Edge.

ASA och Azure IoT Edge använder Docker behållare för att tillhandahålla en bärbar lösning som körs på flera värd-operativsystem (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 på IoT Edge är tillgänglig som Windows och Linux-avbildningar, som körs på både x86 64- eller ARM (Advanced RISC datorer) arkitekturer.ASA on IoT Edge is made available as Windows and Linux images, running on both x86-64 or ARM (Advanced RISC Machines) architectures.

Indata och utdataInput and output

Indata- och utdataströmmarInput and Output Streams

ASA Edge-jobb kan få indata och utdata från andra moduler som körs på IoT Edge-enheter.ASA Edge jobs can get inputs and outputs from other modules running on IoT Edge devices. För att ansluta från och till specifika moduler, kan du ange routningskonfigurationen vid tidpunkten för distribution.To connect from and to specific modules, you can set the routing configuration at deployment time. Mer information beskrivs på i dokumentationen för IoT Edge-modulen sammansättning.More information is described on the IoT Edge module composition documentation.

CSV och JSON-format stöds för både indata och utdata.For both inputs and outputs, CSV and JSON formats are supported.

För varje indatakort och utdataströmmen som du skapar i ASA-jobbet, skapas en motsvarande slutpunkt på din distribuerade modul.For each input and output stream you create in your ASA job, a corresponding endpoint is created on your deployed module. Dessa slutpunkter kan användas i vägar för din distribution.These endpoints can be used in the routes of your deployment.

AT finns, det går endast att strömindata och stream utdatatyper är Edge Hub.At present, the only supported stream input and stream output types are Edge Hub. Referera till inkommande stöder referenstyp för filen.Reference input supports reference file type. Andra utdata kan nås på ett molnjobb nedströms.Other outputs can be reached using a cloud job downstream. Till exempel skickar ett Stream Analytics-jobb i Edge utdata till Edge Hub, som sedan kan skicka utdata till IoT Hub.For example, a Stream Analytics job hosted in Edge sends output to Edge Hub, which can then send output to IoT Hub. Du kan använda ett andra molnvärd Azure Stream Analytics-jobb med indata från IoT Hub och utdata till Power BI eller en annan Utdatatyp.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.

ReferensdataReference data

Referensdata (även kallat en uppslagstabell) är en begränsad mängd data som är statiska eller långsamma ändrar sin natur.Reference data (also known as a lookup table) is a finite data set that is static or slow changing in nature. Den används för att utföra en sökning eller att korrelera med din dataström.It is used to perform a lookup or to correlate with your data stream. Att göra använder referensdata i Azure Stream Analytics-jobb kan du vanligtvis använder en referens Data ansluta i frågan.To make use of reference data in your Azure Stream Analytics job, you will generally use a Reference Data JOIN in your query. Mer information finns i den använda referensdata för sökningar i Stream Analytics.For more information, see the Using reference data for lookups in Stream Analytics.

Endast lokala referensdata stöds.Only local reference data is supported. När ett jobb har distribuerats till IoT Edge-enhet, laddas referensdata från sökvägen till användardefinierade.When a job is deployed to IoT Edge device, it loads reference data from the user defined file path.

Skapa ett jobb med referensdata i Microsoft Edge:To create a job with reference data on Edge:

  1. Skapa en ny indata för jobbet.Create a new input for your job.

  2. Välj referensdata som den källtyp.Choose Reference data as the Source Type.

  3. Ha en referens-datafil redo på enheten.Have a reference data file ready on the device. Placera filen referens data på den lokala enheten för en Windows-behållare och dela den lokala enheten med Docker-behållaren.For a Windows container, put the reference data file on the local drive and share the local drive with the Docker container. Skapa en Docker-volym för en Linux-behållare och fylla i datafilen till volymen.For a Linux container, create a Docker volume and populate the data file to the volume.

  4. Ange sökvägen till filen.Set the file path. Värdoperativsystem för Windows och Windows-behållare kan du använda den absoluta sökvägen: E:\<PathToFile>\v1.csv.For Windows Host OS and Windows container, use the absolute path: E:\<PathToFile>\v1.csv. En Värdoperativsystem för Windows och Linux-behållare eller en Linux OS och Linux-behållare kan du använda sökvägen i volymen: <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.

Nya referensindata för Azure Stream Analytics-jobb på IoT Edge

Referensdata på IoT Edge update utlöses av en distribution.The reference data on IoT Edge update is triggered by a deployment. När utlöses, hämtar modulen ASA uppdaterade data utan att stoppa det pågående jobbet.Once triggered, the ASA module picks the updated data without stopping the running job.

Det finns två sätt att uppdatera referensdata:There are two ways to update the reference data:

  • Uppdatera sökvägen för referens i ASA-jobb från Azure-portalen.Update reference data path in your ASA job from Azure portal.
  • Uppdatera IoT Edge-distribution.Update the IoT Edge deployment.

Licens och meddelanden från tredje partLicense and third-party notices

Azure Stream Analytics-modulen bildinformationAzure Stream Analytics module image information

Den här versionsinformationen senast uppdaterades på 2019-06-27:This version information was last updated on 2019-06-27:

  • Bild: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-amd64Image: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-amd64

    • Källavbildning: microsoft/dotnet:2.1.6-runtime-alpine3.7base image: microsoft/dotnet:2.1.6-runtime-alpine3.7
    • Plattform:platform:
      • arkitektur: amd64architecture: amd64
      • os: linuxos: linux
  • Bild: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-arm32v7Image: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-linux-arm32v7

    • Källavbildning: microsoft/dotnet:2.1.6-runtime-bionic-arm32v7base image: microsoft/dotnet:2.1.6-runtime-bionic-arm32v7
    • Plattform:platform:
      • arkitektur: armarchitecture: arm
      • os: linuxos: linux
  • Bild: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-windows-amd64Image: asaedge.azurecr.io/public/azure-stream-analytics/azureiotedge:1.0.3-windows-amd64

    • Källavbildning: microsoft/dotnet:2.1.6-runtime-nanoserver-1809base image: microsoft/dotnet:2.1.6-runtime-nanoserver-1809
    • Plattform:platform:
      • arkitektur: amd64architecture: amd64
      • operativsystem: windowsos: windows

Få hjälpGet help

För mer hjälp kan du prova den Azure Stream Analytics-forum.For further assistance, try the Azure Stream Analytics forum.

Nästa stegNext steps