Dela via


Konfigurera datainmatning för streaming i ditt Azure Data Explorer-kluster

Strömningsinmatning är användbart för inläsning av data när du behöver korta svarstider mellan inmatning och fråga. Överväg att använda strömningsinmatning i följande scenarier:

  • Svarstid på mindre än en sekund krävs.
  • För att optimera den operativa bearbetningen av många tabeller där dataströmmen till varje tabell är relativt liten (några poster per sekund), men den totala datainmatningsvolymen är hög (tusentals poster per sekund).

Om dataströmmen till varje tabell är hög (över 4 GB per timme) bör du överväga att använda köad inmatning.

Mer information om olika inmatningsmetoder finns i översikten över datainmatning.

Kodexempel baserade på tidigare SDK-versioner finns i den arkiverade artikeln.

Välj lämplig typ av strömningsinmatning

Två typer av strömningsinmatning stöds:

Inmatningstyp Description
Dataanslutning Event Hubs-, IoT Hub- och Event Grid-dataanslutningar kan använda strömmande inmatning, förutsatt att den är aktiverad på klusternivå. Beslutet att använda strömningsinmatning görs enligt den princip för strömningsinmatning som konfigurerats i måltabellen.
Information om hur du hanterar dataanslutningar finns i Event Hub, IoT Hub och Event Grid.
Anpassad inmatning Anpassad inmatning kräver att du skriver ett program som använder ett av Azure Data Explorer-klientbiblioteken.
Använd informationen i det här avsnittet för att konfigurera anpassad inmatning. Du kanske också tycker att exempelprogrammet för C#-strömningsinmatning är användbart.

Använd följande tabell för att välja den inmatningstyp som är lämplig för din miljö:

Kriterium Dataanslutning Anpassad inmatning
Datafördröjning mellan inmatningsinitiering och tillgängliga data för fråga Längre fördröjning Kortare fördröjning
Omkostnader för utveckling Snabb och enkel installation, inga utvecklingskostnader Höga utvecklingskostnader för att skapa ett program som matar in data, hanterar fel och säkerställer datakonsekvens

Anteckning

Du kan hantera processen för att aktivera och inaktivera strömningsinmatning i klustret med hjälp av Azure Portal eller programmatiskt i C#. Om du använder C# för ditt anpassade program kan det vara enklare att använda den programmatiska metoden.

Förutsättningar

Prestanda- och driftsöverväganden

De viktigaste bidragsgivarna som kan påverka strömningsinmatningen är:

  • VM- och klusterstorlek: Prestanda för strömningsinmatning och kapacitetsskalor med ökade storlekar på virtuella datorer och kluster. Antalet samtidiga inmatningsbegäranden är begränsat till sex per kärna. För SKU:er med 16 kärnor, till exempel D14 och L16, är den maximala belastningen som stöds 96 samtidiga inmatningsbegäranden. För två kärn-SKU:er, till exempel D11, är den maximala belastningen som stöds 12 samtidiga inmatningsbegäranden.
  • Datastorleksgräns: Datastorleksgränsen för en begäran om strömningsinmatning är 4 MB. Detta inkluderar alla data som skapats för uppdateringsprinciper under inmatningen.
  • Schemauppdateringar: Schemauppdateringar, till exempel skapande och ändring av tabeller och inmatningsmappningar, kan ta upp till fem minuter för den strömmande inmatningstjänsten. Mer information finns i Strömmande inmatning och schemaändringar.
  • SSD-kapacitet: Om du aktiverar strömningsinmatning i ett kluster, även om data inte matas in via strömning, används en del av den lokala SSD-disken på klusterdatorerna för strömmande datainmatning och minskar lagringsutrymmet som är tillgängligt för frekvent cache.

Aktivera strömningsinmatning i klustret

Innan du kan använda strömningsinmatning måste du aktivera funktionen i klustret och definiera en princip för strömningsinmatning. Du kan aktivera funktionen när du skapar klustret eller lägga till det i ett befintligt kluster.

Varning

Granska begränsningarna innan du aktiverar strömningsinmatning.

Aktivera strömningsinmatning när du skapar ett nytt kluster

Du kan aktivera strömningsinmatning när du skapar ett nytt kluster med hjälp av Azure Portal eller programmatiskt i C#.

När du skapar ett kluster med hjälp av stegen i Skapa ett Azure Data Explorer-kluster och databas går du till fliken Konfigurationer och väljer Direktuppspelningsinmatning>.

Aktivera strömningsinmatning när du skapar ett kluster i Azure Data Explorer.

Aktivera strömningsinmatning i ett befintligt kluster

Om du har ett befintligt kluster kan du aktivera strömningsinmatning med hjälp av Azure Portal eller programmatiskt i C#.

  1. I Azure Portal går du till ditt Azure Data Explorer-kluster.

  2. I Inställningar väljer du Konfigurationer.

  3. I fönstret Konfigurationer väljer du för att aktivera strömningsinmatning.

  4. Välj Spara.

    Aktivera strömningsinmatning i Azure Data Explorer.

Skapa en måltabell och definiera principen

Skapa en tabell för att ta emot strömmande inmatningsdata och definiera dess relaterade princip med hjälp av Azure Portal eller programmatiskt i C#.

  1. I Azure Portal navigerar du till klustret.

  2. Välj Fråga.

    Välj fråga i Azure Data Explorer-portalen för att aktivera strömningsinmatning.

  3. Om du vill skapa tabellen som ska ta emot data via strömmande inmatning kopierar du följande kommando till fönstret Fråga och väljer Kör.

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    

    Skapa en tabell för strömning av inmatning till Azure Data Explorer.

  4. Kopiera något av följande kommandon till fönstret Fråga och välj Kör. Detta definierar principen för strömningsinmatning i den tabell som du skapade eller i databasen som innehåller tabellen.

    Tips

    En princip som definieras på databasnivå gäller för alla befintliga och framtida tabeller i databasen. När du aktiverar principen på databasnivå behöver du inte aktivera den per tabell.

    • Om du vill definiera principen i tabellen som du skapade använder du:

      .alter table TestTable policy streamingingestion enable
      
    • Om du vill definiera principen för databasen som innehåller tabellen du skapade använder du:

      .alter database StreamingTestDb policy streamingingestion enable
      

    Definiera policyn för strömningsinmatning i Azure Data Explorer.

Skapa ett program för direktuppspelningsinmatning för att mata in data till klustret

Skapa ditt program för att mata in data till klustret med det språk du föredrar.

using System.IO;
using System.Threading.Tasks;
using Kusto.Data; // Requires Package Microsoft.Azure.Kusto.Data
using Kusto.Data.Common;
using Kusto.Ingest; // Requires Package Microsoft.Azure.Kusto.Ingest
namespace StreamingIngestion;
class Program
{
    static async Task Main(string[] args)
    {
        var clusterPath = "https://<clusterName>.<region>.kusto.windows.net";
        var appId = "<appId>";
        var appKey = "<appKey>";
        var appTenant = "<appTenant>";
        // Create Kusto connection string with App Authentication
        var connectionStringBuilder = new KustoConnectionStringBuilder(clusterPath)
            .WithAadApplicationKeyAuthentication(
                applicationClientId: appId,
                applicationKey: appKey,
                authority: appTenant
            );
        // Create a disposable client that will execute the ingestion
        using var client = KustoIngestFactory.CreateStreamingIngestClient(connectionStringBuilder);
        // Ingest from a compressed file
        var fileStream = File.Open("MyFile.gz", FileMode.Open);
        // Initialize client properties
        var ingestionProperties = new KustoIngestionProperties(databaseName: "<databaseName>", tableName: "<tableName>");
        // Create source options
        var sourceOptions = new StreamSourceOptions { CompressionType = DataSourceCompressionType.GZip, };
        // Ingest from stream
        await client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions);
    }
}

Inaktivera strömningsinmatning i klustret

Varning

Det kan ta några timmar att inaktivera strömningsinmatning.

Innan du inaktiverar strömningsinmatning i Azure Data Explorer-klustret släpper du principen för strömningsinmatning från alla relevanta tabeller och databaser. Borttagningen av den strömmande inmatningsprincipen utlöser omorganisering av data i ditt Azure Data Explorer-kluster. Strömmande inmatningsdata flyttas från den ursprungliga lagringen till permanent lagring i kolumnlagret (utrymmen eller shards). Den här processen kan ta mellan några sekunder och några timmar, beroende på mängden data i den ursprungliga lagringen.

Ta bort principen för strömningsinmatning

Du kan ta bort principen för strömningsinmatning med hjälp av Azure Portal eller programmatiskt i C#.

  1. I Azure Portal går du till ditt Azure Data Explorer-kluster och väljer Fråga.

  2. Om du vill ta bort den strömmande inmatningsprincipen från tabellen kopierar du följande kommando till frågefönstret och väljer Kör.

    .delete table TestTable policy streamingingestion
    

    Ta bort policyn för strömningsinmatning i Azure Data Explorer.

  3. I Inställningar väljer du Konfigurationer.

  4. I fönstret Konfigurationer väljer du Av för att inaktivera strömningsinmatning.

  5. Välj Spara.

    Inaktivera strömningsinmatning i Azure Data Explorer.

Begränsningar

  • Datamappningar måste skapas i förväg för användning vid strömningsinmatning. Enskilda begäranden om direktuppspelningsinmatning har inte plats för infogade datamappningar.
  • Det går inte att ange utrymmestaggar för strömmande inmatningsdata.
  • Uppdatera princip. Uppdateringsprincipen kan bara referera till nyligen inmatade data i källtabellen och inte till andra data eller tabeller i databasen.
  • Om strömningsinmatning är aktiverat på ett kluster som används som ledare för efterföljande databaser, måste strömmande inmatning aktiveras på följande kluster samt för att följa strömmande inmatningsdata. Samma sak gäller om klusterdata delas via Data Share.