Beheer .NET SDK: Analysetaken instellen en uitvoeren met behulp van de Azure Stream Analytics-API voor .NET

Meer 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.

Raadpleeg de documentatie voor beheerreferenties voor de Stream Analytics-API voor .NET.

Azure Stream Analytics is een volledig beheerde service met lage latentie, maximaal beschikbare, schaalbare, complexe gebeurtenisverwerking via streaminggegevens in de cloud. Met Stream Analytics kunnen klanten streamingtaken instellen om gegevensstromen te analyseren en kunnen ze bijna realtime analyses uitvoeren.

Notitie

We hebben de voorbeeldcode in dit artikel bijgewerkt met de .NET SDK v2.x-versie van Azure Stream Analytics Management. Zie De Management .NET SDK v1.x voor Stream Analytics gebruiken voor voorbeeldcode met behulp van de sdkversie lagecy (1.x).

Vereisten

Voordat u aan dit artikel begint, moet u over de volgende vereisten beschikken:

  • Installeer Visual Studio 2019 of 2015.

  • Download en installeer Azure .NET SDK.

  • Maak een Azure-resourcegroep in uw abonnement. Het volgende voorbeeld is een Azure PowerShell-voorbeeldscript. Zie Azure PowerShell installeren en configureren voor informatie over 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 waarmee de taak verbinding kan maken.

Een project instellen

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

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

  2. Voer in de 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 app Instellingen sectie 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 ophalen door de volgende Azure PowerShell-cmdlet uit te voeren:

       Get-AzureAccount
    
  4. Voeg de volgende verwijzing toe in 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. Een verificatiehulpmethode toevoegen:

    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 Stream Analytics-beheerclient 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 Main-methode :

 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 geselecteerd in de vereiste stappen.

Als u het aspect van de referentiepresentatie van het maken van taken wilt automatiseren, raadpleegt u Het verifiëren van een service-principal met Azure Resource Manager.

In de resterende secties van dit artikel wordt ervan uitgegaan dat deze code zich aan het begin van de Main-methode bevindt .

Een Stream Analytics-taak maken

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

// 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 Stream Analytics-invoerbron maken

Met de volgende code wordt een Stream Analytics-invoerbron gemaakt met het type blob-invoerbron 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 van 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 Stream Analytics-invoerbron testen

Met de methode Test Verbinding maken ion wordt getest of de Stream Analytics-taak verbinding kan maken met de invoerbron en 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 naam en het sleutelpaar van het opslagaccount kunnen worden gebruikt om verbinding te maken met het opslagaccount en 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 aanroep Test Verbinding maken ion is een ResourceTestResult-object dat twee eigenschappen bevat:

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

Een Stream Analytics-uitvoerdoel maken

Het maken van een uitvoerdoel is vergelijkbaar met het maken van een 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 Stream Analytics-uitvoerdoel testen

Een Stream Analytics-uitvoerdoel heeft ook de testmethode Verbinding maken ion voor het testen van verbindingen.

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

Een Stream Analytics-transformatie maken

Met de volgende code maakt u een Stream Analytics-transformatie met de query 'select * from Input' en geeft u op om één streaming-eenheid toe te wijzen voor de Stream Analytics-taak. Zie Azure Stream Analytics-taken schalen voor meer informatie over het aanpassen van 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 waaronder deze is gemaakt.

Een Stream Analytics-taak starten

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

Met de volgende voorbeeldcode wordt een 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-taak stoppen

U kunt een actieve Stream Analytics-taak stoppen door de stopmethode aan te roepen.

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

Een Stream Analytics-taak 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 Q&A-vragenpagina voor Azure Stream Analytics voor meer hulp.

Volgende stappen

U hebt de basisbeginselen geleerd van het gebruik van een .NET SDK om analysetaken te maken en uit te voeren. Zie de volgende artikelen voor meer informatie: