Management .NET SDK: Analytische taken instellen en uitvoeren met behulp van de Azure Stream Analytics API voor .NET

Informatie over het instellen en uitvoeren van analysetaken met behulp van de Stream Analytics API voor .NET met behulp van de Management .NET SDK. Stel een project in, maak invoer- en uitvoerbronnen, transformaties en start- en stoptaken. Voor uw analysetaken kunt u gegevens streamen vanuit Blob Storage of vanuit een Event Hub.

Zie de naslagdocumentatie voor beheer voor Stream Analytics API voor .NET.

Azure Stream Analytics is een volledig beheerde service die een lage latentie biedt, uiterst beschikbare, schaalbare, complexe gebeurtenisverwerking via streaminggegevens in de cloud. Stream Analytics stelt klanten in staat om streamingtaken in te stellen voor het analyseren van gegevensstromen en kunnen ze bijna realtime analyses maken.

Notitie

We hebben de voorbeeldcode in dit artikel bijgewerkt met Azure Stream Analytics Management .NET SDK v2.x versie. Zie Use the Management .NET SDK v1.x for Stream Analytics (Beheer .NET SDK v1.x gebruiken voor een Stream Analytics) voor voorbeeldcode die gebruikmaakt van de SDK-versie van lagecy (1.x).

Vereisten

Voordat u met dit artikel begint, moet u aan de volgende vereisten voldoen:

  • Installeer Visual Studio 2019 of 2015.

  • Download en installeer Azure .NET SDK.

  • Maak een Azure-resourcegroep in uw abonnement. Het volgende voorbeeld is een voorbeeld van Azure PowerShell script. Zie Azure PowerShell installeren en configureren voor meer Azure PowerShell;

    # Log in to your Azure account
    Add-AzureAccount
    
    # Select the Azure subscription you want to use to create the resource group
    Select-AzureSubscription -SubscriptionName <subscription name>
    
    # If Stream Analytics has not been registered to the subscription, remove the remark    symbol (#) to run the Register-AzProvider cmdlet to register the provider namespace
    #Register-AzProvider -Force -ProviderNamespace 'Microsoft.StreamAnalytics'
    
    # Create an Azure resource group
    New-AzureResourceGroup -Name <YOUR RESOURCE GROUP NAME> -Location <LOCATION>
    
  • Stel een invoerbron en uitvoerdoel in voor de taak om verbinding mee te maken.

Een project instellen

Als u een analyse-taak wilt maken, gebruikt Stream Analytics API voor .NET en stelt u eerst uw project in.

  1. Maak een Visual Studio C# .NET-consoletoepassing.

  2. Voer in Pakketbeheer Console de volgende opdrachten uit om de NuGet-pakketten te installeren. De eerste is de Azure Stream Analytics Management .NET SDK. De tweede is voor Azure-clientverificatie.

    Install-Package Microsoft.Azure.Management.StreamAnalytics -Version 2.0.0
    Install-Package Microsoft.Rest.ClientRuntime.Azure.Authentication -Version 2.3.1
    
  3. Voeg de volgende sectie appSettings toe aan het App.config bestand:

    <appSettings>
        <add key="ClientId" value="1950a258-227b-4e31-a9cf-717495945fc2" />
        <add key="RedirectUri" value="urn:ietf:wg:oauth:2.0:oob" />
        <add key="SubscriptionId" value="YOUR SUBSCRIPTION ID" />
        <add key="ActiveDirectoryTenantId" value="YOUR TENANT ID" />
    </appSettings>
    

    Vervang waarden voor SubscriptionId en ActiveDirectoryTenantId door uw Azure-abonnement en tenant-ID's. U kunt deze waarden krijgen door de volgende cmdlet Azure PowerShell uitvoeren:

       Get-AzureAccount
    
  4. Voeg de volgende verwijzing toe aan uw .csproj-bestand:

    <Reference Include="System.Configuration" />
    
  5. Voeg de volgende using-instructies toe aan het bronbestand (Program.cs) in het project:

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Threading;
    using System.Threading.Tasks;
    
    using Microsoft.Azure.Management.StreamAnalytics;
    using Microsoft.Azure.Management.StreamAnalytics.Models;
    using Microsoft.Rest.Azure.Authentication;
    using Microsoft.Rest;
    
  6. Voeg een verificatie-helpermethode toe:

    private static async Task<ServiceClientCredentials> GetCredentials()
    {
        var activeDirectoryClientSettings = ActiveDirectoryClientSettings.UsePromptOnly(ConfigurationManager.AppSettings["ClientId"], new Uri("urn:ietf:wg:oauth:2.0:oob"));
        ServiceClientCredentials credentials = await UserTokenProvider.LoginWithPromptAsync(ConfigurationManager.AppSettings["ActiveDirectoryTenantId"], activeDirectoryClientSettings);
    
        return credentials;
     }
    

Een client voor Stream Analytics maken

Met een StreamAnalyticsManagementClient-object kunt u de taak en de taakonderdelen beheren, zoals invoer, uitvoer en transformatie.

Voeg de volgende code toe aan het begin van de methode Main :

 string resourceGroupName = "<YOUR AZURE RESOURCE GROUP NAME>";
 string streamingJobName = "<YOUR STREAMING JOB NAME>";
 string inputName = "<YOUR JOB INPUT NAME>";
 string transformationName = "<YOUR JOB TRANSFORMATION NAME>";
 string outputName = "<YOUR JOB OUTPUT NAME>";
 
 SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
 
 // Get credentials
 ServiceClientCredentials credentials = GetCredentials().Result;
 
 // Create Stream Analytics management client
 StreamAnalyticsManagementClient streamAnalyticsManagementClient = new StreamAnalyticsManagementClient(credentials)
 {
     SubscriptionId = ConfigurationManager.AppSettings["SubscriptionId"]
 };

De waarde van de variabele resourceGroupName moet gelijk zijn aan de naam van de resourcegroep die u hebt gemaakt of hebt opgehaald in de vereiste stappen.

Raadpleeg Authenticating a service principal with Azure Resource Manager (Een service-principal authenticeren met een Azure Resource Manager) om het referentie-presentatieaspect van het maken van een taak te Azure Resource Manager.

In de resterende secties van dit artikel wordt ervan uitgenomen dat deze code aan het begin staat van de methode Main .

Een Stream Analytics-taak maken

Met de volgende code maakt u Stream Analytics taak onder de resourcegroep die u hebt gedefinieerd. U voegt later een invoer, uitvoer en transformatie aan de taak toe.

// Create a streaming job
StreamingJob streamingJob = new StreamingJob()
{
    Tags = new Dictionary<string, string>()
    {
        { "Origin", ".NET SDK" },
        { "ReasonCreated", "Getting started tutorial" }
    },
    Location = "West US",
    EventsOutOfOrderPolicy = EventsOutOfOrderPolicy.Drop,
    EventsOutOfOrderMaxDelayInSeconds = 5,
    EventsLateArrivalMaxDelayInSeconds = 16,
    OutputErrorPolicy = OutputErrorPolicy.Drop,
    DataLocale = "en-US",
    CompatibilityLevel = CompatibilityLevel.OneFullStopZero,
    Sku = new Sku()
    {
        Name = SkuName.Standard
    }
};
StreamingJob createStreamingJobResult = streamAnalyticsManagementClient.StreamingJobs.CreateOrReplace(streamingJob, resourceGroupName, streamingJobName);

Een invoerbron Stream Analytics maken

Met de volgende code maakt u Stream Analytics invoerbron met het brontype blobinvoer en CSV-serialisatie. Als u een event hub-invoerbron wilt maken, gebruikt u EventHubStreamInputDataSource in plaats van BlobStreamInputDataSource. Op dezelfde manier kunt u het serialisatietype van de invoerbron aanpassen.

// Create an input
StorageAccount storageAccount = new StorageAccount()
{
    AccountName = "<YOUR STORAGE ACCOUNT NAME>",
    AccountKey = "<YOUR STORAGE ACCOUNT KEY>"
};
Input input = new Input()
{
    Properties = new StreamInputProperties()
    {
        Serialization = new CsvSerialization()
        {
            FieldDelimiter = ",",
            Encoding = Encoding.UTF8
        },
        Datasource = new BlobStreamInputDataSource()
        {
            StorageAccounts = new[] { storageAccount },
            Container = "<YOUR STORAGE BLOB CONTAINER>",
            PathPattern = "{date}/{time}",
            DateFormat = "yyyy/MM/dd",
            TimeFormat = "HH",
            SourcePartitionCount = 16
        }
    }
};
Input createInputResult = streamAnalyticsManagementClient.Inputs.CreateOrReplace(input, resourceGroupName, streamingJobName, inputName);

Invoerbronnen, ongeacht of deze afkomstig zijn uit Blob Storage of een Event Hub, zijn gekoppeld aan een specifieke taak. Als u dezelfde invoerbron voor verschillende taken wilt gebruiken, moet u de methode opnieuw aanroepen en een andere taaknaam opgeven.

Een invoerbron Stream Analytics testen

Met de methode TestConnection wordt getest of de Stream Analytics-taak verbinding kan maken met de invoerbron, evenals andere aspecten die specifiek zijn voor het invoerbrontype. In de blob-invoerbron die u in een eerdere stap hebt gemaakt, controleert de methode bijvoorbeeld of de Storage-accountnaam en het sleutelpaar kunnen worden gebruikt om verbinding te maken met het Storage-account en om te controleren of de opgegeven container bestaat.

// Test the connection to the input
ResourceTestStatus testInputResult = streamAnalyticsManagementClient.Inputs.Test(resourceGroupName, streamingJobName, inputName);

Het resultaat van de TestConnection-aanroep is een ResourceTestResult-object dat twee eigenschappen bevat:

  • status: Dit kan een van de volgende tekenreeksen zijn: ["TestNotAt misschien", "TestSucceeded", "TestFailed"]
  • error: Het is van het type ErrorResponse dat de volgende eigenschappen bevat:
    • code: een vereiste eigenschap van het type tekenreeks. De waarde is standaard System.Net.HttpStatusCode die is ontvangen tijdens het testen.
    • message: een vereiste eigenschap van het type tekenreeks die de fout vertegenwoordigt.

Een uitvoerdoel Stream Analytics maken

Het maken van een uitvoerdoel is vergelijkbaar met het maken van Stream Analytics invoerbron. Net als invoerbronnen zijn uitvoerdoelen gekoppeld aan een specifieke taak. Als u hetzelfde uitvoerdoel voor verschillende taken wilt gebruiken, moet u de methode opnieuw aanroepen en een andere taaknaam opgeven.

Met de volgende code maakt u een uitvoerdoel (Azure SQL Database). U kunt het gegevenstype en/of serialisatietype van het uitvoerdoel aanpassen.

// Create an output
Output output = new Output()
{
    Datasource = new AzureSqlDatabaseOutputDataSource()
    {
        Server = "<YOUR DATABASE SERVER NAME>",
        Database = "<YOUR DATABASE NAME>",
        User = "<YOUR DATABASE LOGIN>",
        Password = "<YOUR DATABASE LOGIN PASSWORD>",
        Table = "<YOUR DATABASE TABLE NAME>"
    }
};
Output createOutputResult = streamAnalyticsManagementClient.Outputs.CreateOrReplace(output, resourceGroupName, streamingJobName, outputName);

Een uitvoerdoel Stream Analytics testen

Een Stream Analytics uitvoerdoel heeft ook de methode TestConnection voor het testen van verbindingen.

// Test the connection to the output
ResourceTestStatus testOutputResult = streamAnalyticsManagementClient.Outputs.Test(resourceGroupName, streamingJobName, outputName);

Een transformatie Stream Analytics maken

De volgende code maakt een Stream Analytics transformatie met de query 'select * from Input' en geeft aan dat er één streaming-eenheid voor de Stream Analytics toegewezen. Zie Scale Azure Stream Analytics jobs (Taken schalen) voor meer informatie over het aanpassen Azure Stream Analytics streaming-eenheden.

// Create a transformation
Transformation transformation = new Transformation()
{
    Query = "Select Id, Name from <your input name>", // '<your input name>' should be replaced with the value you put for the 'inputName' variable above or in a previous step
    StreamingUnits = 1
};
Transformation createTransformationResult = streamAnalyticsManagementClient.Transformations.CreateOrReplace(transformation, resourceGroupName, streamingJobName, transformationName);

Net als invoer en uitvoer is een transformatie ook gekoppeld aan de specifieke Stream Analytics taak onder de taak is gemaakt.

Een Stream Analytics-taak starten

Nadat u een Stream Analytics taak en de invoer(en), uitvoer(en) en transformatie hebt gemaakt, kunt u de taak starten door de methode Start aan te roepen.

Met de volgende voorbeeldcode wordt Stream Analytics taak gestart met een aangepaste begintijd voor uitvoer ingesteld op 12 december 2012, 12:12:12 UTC:

// Start a streaming job
StartStreamingJobParameters startStreamingJobParameters = new StartStreamingJobParameters()
{
    OutputStartMode = OutputStartMode.CustomTime,
    OutputStartTime = new DateTime(2012, 12, 12, 12, 12, 12, DateTimeKind.Utc)
};
streamAnalyticsManagementClient.StreamingJobs.Start(resourceGroupName, streamingJobName, startStreamingJobParameters);

Een Stream Analytics stoppen

U kunt een Stream Analytics stoppen door de methode Stop aan te roepen.

// Stop a streaming job
streamAnalyticsManagementClient.StreamingJobs.Stop(resourceGroupName, streamingJobName);

Een Stream Analytics verwijderen

Met de methode Delete worden de taak en de onderliggende subbronnen verwijderd, waaronder invoer(en), uitvoer(en) en transformatie van de taak.

// Delete a streaming job
streamAnalyticsManagementClient.StreamingJobs.Delete(resourceGroupName, streamingJobName);

Ondersteuning krijgen

Probeer onze Microsoft QA-vragenpagina& voor meer informatie Azure Stream Analytics.

Volgende stappen

U hebt de basisbeginselen geleerd van het gebruik van een .NET SDK voor het maken en uitvoeren van analysetaken. Lees de volgende artikelen voor meer informatie: