Freigeben über


Konfigurieren der Streamingerfassung in Ihrem Azure Data Explorer-Cluster

Die Streamingerfassung ist nützlich zum Laden von Daten, wenn eine geringe Wartezeit zwischen Erfassung und Abfrage erforderlich ist. Die Streamingerfassung kann in folgenden Szenarien verwendet werden:

  • Eine Wartezeit von weniger als einer Sekunde ist erforderlich.
  • Optimierung der operativen Verarbeitung vieler Tabellen, bei denen der Datenstrom für die einzelnen Tabellen jeweils relativ klein (wenige Datensätze pro Sekunde), das Gesamtvolumen der Datenerfassung aber hoch ist (mehrere tausend Datensätze pro Sekunde).

Wenn der Datenstrom für jede Tabelle hoch ist (über 4 GB pro Stunde), sollten Sie die Warteschlangenaufnahme in Betracht ziehen.

Unter Übersicht über die Datenerfassung in Azure Data Explorer erfahren Sie mehr über verschiedene Erfassungsmethoden.

Codebeispiele, die auf früheren SDK-Versionen basieren, finden Sie im archivierten Artikel.

Auswählen des geeigneten Streamingerfassungstyps

Zwei Streamingerfassungstypen werden unterstützt:

Erfassungstyp Beschreibung
Datenverbindung Event-Hubs-, IoT-Hub- und Event-Grid-Datenverbindungen können die Streaming-Ingestion verwenden, vorausgesetzt, dass sie auf Clusterebene aktiviert ist. Die Entscheidung für die Verwendung der Streamingaufnahme erfolgt gemäß der auf der Zieltabelle konfigurierten Streaming-Ingestion-Richtlinie.
Informationen zum Verwalten von Datenverbindungen finden Sie unter Event Hub, IoT Hub und Event Grid.
Benutzerdefinierte Erfassung Für die benutzerdefinierte Erfassung müssen Sie eine Anwendung schreiben, die eine der Azure Data Explorer-Clientbibliotheken verwendet.
Verwenden Sie die Informationen in diesem Artikel, um den benutzerdefinierten Datenimport zu konfigurieren. Möglicherweise finden Sie auch die C?view=azure-data-explorer&preserve-view=true#-Streaming-Ingestion-Beispielanwendung hilfreich.

Die folgende Tabelle unterstützt Sie beim Auswählen eines für Ihre Umgebung geeigneten Erfassungstyps:

Kriterium Datenverbindung Benutzerdefinierte Erfassung
Datenverzögerung zwischen der Initiierung der Erfassung und der Verfügbarkeit der Daten für Abfragen Längere Verzögerung Kürzere Verzögerung
Zusätzlicher Entwicklungsaufwand Schnelle und einfache Einrichtung, kein zusätzlicher Entwicklungsaufwand Hoher zusätzlicher Entwicklungsaufwand zum Erstellen einer Anwendung, um die Daten zu erfassen, Fehler zu behandeln und die Datenkonsistenz sicherzustellen.

Hinweis

Sie können den Prozess zum Aktivieren und Deaktivieren der Streamingerfassung in Ihrem Cluster mithilfe des Azure-Portals oder programmgesteuert in C# verwalten. Wenn Sie C# für Ihre benutzerdefinierte Anwendung verwenden, finden Sie es möglicherweise bequemer mit dem programmgesteuerten Ansatz.

Voraussetzungen

Überlegungen zu Leistung und Betrieb

Die wichtigsten Aspekte, die sich auf die Streamingerfassung auswirken können:

  • VM- und Clustergröße: Die Leistung und Kapazität der Streaming-Ingestion skalieren mit zunehmender Größe von VMs und Clustern. Die Anzahl der gleichzeitigen Erfassungsanforderungen ist auf sechs pro Kern beschränkt. Beispielsweise besteht die maximale unterstützte Last bei SKUs mit 16 Kernen (z. B. D14 und L16) aus 96 gleichzeitigen Erfassungsanforderungen. Bei SKUs mit 2 Kernen (z. B. D11) werden als maximale Last 12 gleichzeitige Erfassungsanfragen unterstützt.
  • Datengrößenbeschränkung: Die Datengröße für Anforderungen zur Streamingerfassung ist auf 4 MB beschränkt. Dies schließt alle Daten ein, die während der Erfassung für Updaterichtlinien erstellt wurden.
  • Schemaaktualisierungen: Schemaaktualisierungen wie die Erstellung und Änderung von Tabellen und Erfassungszuordnungen können für den Streamingerfassungsdienst bis zu fünf Minuten dauern. Weitere Informationen finden Sie unter Streamingerfassung und Schemaänderungen.
  • SSD-Kapazität: Wenn die Streamingerfassung in einem Cluster aktiviert wird, wird ein Teil des lokalen SSD-Datenträgers der Clustercomputer für Streamingerfassungsdaten genutzt, wodurch sich der verfügbare Speicherplatz für den aktiven Cache verringert. Dies gilt auch, wenn gar keine Daten per Streaming erfasst werden.
  • Datenbankcursor: Bei verwendung der Streamingaufnahme können Datenbankcursoraktualisierungen bis zu 60 Sekunden hinter der Datenverfügbarkeit zurückbleiben. Diese Verzögerung ergibt sich aus asynchronen Hintergrundversiegelungsprozessen, die Daten aus dem Streamingpuffer in permanente Spaltenspeicher-Ausmaße übertragen, bei denen der Cursor (für inkrementelle Verarbeitung, fortlaufende Exporte oder materialisierte Ansichten) aktualisiert wird. Wenn Ihre Workload eine sofortige Cursorkonsistenz für genau-einmal-Konsistenz erfordert, sollten Sie stattdessen die Warteschlangeneingabe verwenden oder diese potenzielle Verzögerung in der Anwendungslogik berücksichtigen.

Aktivieren Sie die Streamingerfassung in Ihrem Cluster

Bevor Sie die Streamingerfassung verwenden können, müssen Sie die Funktion in Ihrem Cluster aktivieren und eine Streamingerfassungsrichtlinie definieren. Sie können die Funktion beim Erstellen des Clusters aktivieren oder einem vorhandenen Cluster hinzufügen.

Warnung

Überprüfen Sie vor dem Aktivieren der Streamingerfassung die Einschränkungen.

Aktivieren der Streamingerfassung beim Erstellen eines neuen Clusters

Sie können die Streamingerfassung während der Erstellung eines neuen Clusters mithilfe des Azure-Portals oder programmgesteuert in C# aktivieren.

Während Sie einen Cluster anhand der Schritte unter Schnellstart: Erstellen eines Azure Data Explorer-Clusters und einer Datenbank erstellen, wählen Sie auf der Registerkarte Konfigurationen die Option Streamingerfassung>Ein.

Aktivieren der Streamingerfassung beim Erstellen eines Clusters in Azure Data Explorer

Streamingerfassung auf einem vorhandenen Cluster aktivieren

Wenn Sie bereits einen Cluster besitzen, können Sie die Streamingerfassung mithilfe des Azure-Portals oder programmgesteuert in C# aktivieren.

  1. Navigieren Sie im Azure-Portal zum Azure Data Explorer-Cluster.

  2. Wählen Sie unter Einstellungen die Option Konfigurationen aus.

  3. Wählen Sie im Bereich Konfigurationen die Option Ein aus, um die Streamingerfassung zu aktivieren.

  4. Wählen Sie Speichern.

    Aktivieren der Streamingerfassung in Azure Data Explorer

Erstellen einer Zieltabelle und Definieren der Richtlinie

Erstellen Sie eine Tabelle, um die Streamingerfassungsdaten zu empfangen, und definieren Sie die zugehörige Richtlinie mithilfe des Azure-Portals oder programmgesteuert in C#.

  1. Navigieren Sie im Azure-Portal zu Ihrem Cluster.

  2. Wählen Sie Abfrage aus.

    Wählen Sie 'Abfrage' im Azure Data Explorer-Portal aus, um die Streaming-Ingestion zu aktivieren.

  3. Kopieren Sie den folgenden Befehl in den Abfragebereich, und wählen Sie Ausführen aus, um die Tabelle zu erstellen, die die Daten über Streamingerfassung erhalten soll:

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

    Erstellen einer Tabelle für die Streamingerfassung in Azure Data Explorer

  4. Kopieren Sie einen der folgenden Befehle in den Abfragebereich, und wählen Sie Ausführen aus: Dadurch wird die Streamingerfassungsrichtlinie für die von Ihnen erstellte Tabelle oder für die Datenbank definiert, die diese Tabelle enthält.

    Tipp

    Eine Richtlinie, die auf Datenbankebene definiert ist, gilt für alle vorhandenen und zukünftigen Tabellen in der Datenbank. Wenn Sie die Richtlinie auf Datenbankebene aktivieren, müssen Sie sie nicht pro Tabelle aktivieren.

    • Verwenden Sie Folgendes, um die Richtlinie für die von Ihnen erstellte Tabelle zu definieren:

      .alter table TestTable policy streamingingestion enable
      
    • Verwenden Sie Folgendes, um die Richtlinie für die Datenbank zu definieren, die die von Ihnen erstellte Tabelle enthält:

      .alter database StreamingTestDb policy streamingingestion enable
      

    Definieren der Streamingerfassungsrichtlinie in Azure Data Explorer

Erstellen Sie eine Anwendung zur Streamingerfassung, um Daten in Ihren Cluster einzuspeisen.

Erstellen Sie Ihre Anwendung zum Erfassen von Daten in Ihrem Cluster unter Verwendung der von Ihnen bevorzugten Sprache.

Hinweis

Informationen zum Aufnehmen in die Warteschlange finden Sie in den Anweisungen zum Erstellen einer App zum Abrufen von Daten mithilfe einer in die Warteschlange eingereihten Aufnahme.

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);
    }
}

Deaktivieren Sie die Streamingerfassung in Ihrem Cluster

Warnung

Die Deaktivierung der Streamingerfassung kann mehrere Stunden dauern.

Bevor Sie das Streaming-Ingestion für Ihren Azure Data Explorer-Cluster deaktivieren, entfernen Sie die Streamingerfassungsrichtlinie von allen relevanten Tabellen und Datenbanken. Durch das Entfernen der Streamingerfassungsrichtlinie wird eine Neuanordnung der Daten in Ihrem Azure Data Explorer-Cluster ausgelöst. Die Streaming-Ingestionsdaten werden aus dem anfänglichen Speicher in den permanenten Speicher, den Spaltenspeicher (Erweiterungen oder Shards), verschoben. Dieser Vorgang kann abhängig von der Datenmenge im anfänglichen Speicher zwischen einigen Sekunden und wenigen Stunden dauern.

Richtlinie für die Streamingerfassung aufheben

Sie können die Streamingerfassungsrichtlinie mithilfe des Azure-Portals oder programmgesteuert in C# löschen.

  1. Navigieren Sie im Azure-Portal zum Azure Data Explorer-Cluster, und wählen Sie Abfrage aus.

  2. Kopieren Sie zum Löschen der Streamingerfassungsrichtlinie aus der Tabelle den folgenden Befehl in den Abfragebereich, und wählen Sie Ausführen aus:

    .delete table TestTable policy streamingingestion
    

    Löschen der Streamingerfassungsrichtlinie in Azure Data Explorer

  3. Wählen Sie unter Einstellungen die Option Konfigurationen aus.

  4. Wählen Sie im Bereich Konfigurationen die Option Aus aus, um die Streamingerfassung zu deaktivieren.

  5. Wählen Sie Speichern.

    Deaktivieren der Streamingerfassung in Azure Data Explorer

Begrenzungen

  • Datenzuordnungen müssen vorab erstellt werden, damit sie bei der Streamingerfassung verwendet werden können. Individuelle Streaming-Ingestion-Anfragen unterstützen keine Inline-Datenzuordnungen.
  • Erweiterungstags können für die Streamingerfassungsdaten nicht festgelegt werden.
  • Updaterichtlinie
    • Die Aktualisierungsrichtlinie kann nur auf neu aufgenommene Daten in der Quelltabelle und nicht auf andere Daten oder Tabellen in der Datenbank verweisen.
    • Python-Plug-In wird nicht unterstützt
    • Wenn eine Aktualisierungsrichtlinie mit einer Transaktionsrichtlinie fehlschlägt, greifen die Wiederholungen auf die Batchaufnahme zurück.
    • Für kaskadierende Updaterichtlinien, die einen join Operator enthalten, müssen Sie die Streamingaufnahme für alle Upstream-Tabellen deaktivieren. Ziehen Sie z. B. Kaskadierende Updaterichtlinien in Betracht, bei denen Tabelle1 Tabelle2 aktualisiert, Tabelle2 Tabelle3 und Tabelle3 Tabelle4 aktualisiert. Wenn die Updaterichtlinie von Tabelle4 eine Verknüpfung enthält, muss das Streaming-Ingestion bei Tabelle1, Tabelle2 und Tabelle3 deaktiviert werden.
  • Wenn die Streamingerfassung für einen Cluster aktiviert ist, der als Leader für Follower-Datenbanken verwendet wird, muss die Streamingerfassung auch für die folgenden Cluster aktiviert werden, um den Streamingerfassungsdaten zu folgen. Gleiches gilt für die Freigabe der Clusterdaten über Data Share.