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 in jede Tabelle hoch ist (über 4 GB pro Stunde), sollten Sie die Aufnahme in die Warteschlange verwenden.
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 streamingeingestion verwenden, vorausgesetzt, sie ist auf Clusterebene aktiviert. Die Entscheidung für die Verwendung der Streamingaufnahme erfolgt gemäß der streamingingestion-Richtlinie, die in der Zieltabelle konfiguriert ist. 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. Konfigurieren Sie die benutzerdefinierte Erfassung anhand der Informationen in diesem Thema. Unter Umständen finden Sie auch die C#-Beispielanwendung für die Streamingerfassung 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 nutzen, ist der programmgesteuerte Ansatz möglicherweise praktischer.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Azure-Konto.
Überlegungen zu Leistung und Betrieb
Die wichtigsten Aspekte, die sich auf die Streamingerfassung auswirken können:
- VM- und Clustergröße: Leistung und Kapazität der Streamingerfassung werden für größere virtuelle Computer und Cluster skaliert. 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.
Aktivieren der 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ählen Sie auf der Registerkarte Konfigurationen die Option Streamingerfassung>Ein aus, während Sie einen Cluster anhand der Schritte unter Schnellstart: Erstellen eines Azure Data Explorer-Clusters und einer Datenbank erstellen.
Aktivieren der Streamingerfassung für einen vorhandenen Cluster
Wenn Sie bereits einen Cluster besitzen, können Sie die Streamingerfassung mithilfe des Azure-Portals oder programmgesteuert in C# aktivieren.
Navigieren Sie im Azure-Portal zum Azure Data Explorer-Cluster.
Wählen Sie unter Einstellungen die Option Konfigurationen aus.
Wählen Sie im Bereich Konfigurationen die Option Ein aus, um die Streamingerfassung zu aktivieren.
Wählen Sie Speichern.
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#.
Navigieren Sie im Azure-Portal zu Ihrem Cluster.
Wählen Sie Abfrage aus.
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)
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, muss sie nicht pro Tabelle aktiviert werden.
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
Erstellen einer Anwendung für die Streamingerfassung zum Erfassen von Daten in Ihrem Cluster
Erstellen Sie Ihre Anwendung zum Erfassen von Daten in Ihrem Cluster unter Verwendung der von Ihnen bevorzugten Sprache.
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 der Streamingerfassung in Ihrem Cluster
Warnung
Die Deaktivierung der Streamingerfassung kann mehrere Stunden dauern.
Bevor Sie die Streamingangabe für Ihren Azure Data Explorer-Cluster deaktivieren, löschen Sie die Streamingerfassungsrichtlinie aus allen relevanten Tabellen und Datenbanken. Durch das Entfernen der Streamingerfassungsrichtlinie wird eine Neuanordnung der Daten in Ihrem Azure Data Explorer-Cluster ausgelöst. Die Streamingerfassungsdaten werden aus dem anfänglichen Speicher in den permanenten Speicher im Spaltenspeicher (Erweiterungen oder Shards) verschoben. Dieser Vorgang kann abhängig von der Datenmenge im anfänglichen Speicher zwischen einigen Sekunden und wenigen Stunden dauern.
Löschen der Streamingerfassungsrichtlinie
Sie können die Streamingerfassungsrichtlinie mithilfe des Azure-Portals oder programmgesteuert in C# löschen.
Navigieren Sie im Azure-Portal zum Azure Data Explorer-Cluster, und wählen Sie Abfrage aus.
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
Wählen Sie unter Einstellungen die Option Konfigurationen aus.
Wählen Sie im Bereich Konfigurationen die Option Off aus, um die Streamingerfassung zu aktivieren.
Wählen Sie Speichern.
Begrenzungen
- Datenzuordnungen müssen vorab erstellt werden, damit sie bei der Streamingerfassung verwendet werden können. Individuelle Anforderungen zur Streamingerfassung bieten keine Inlinedatenzuordnungen.
- Erweiterungstags können für die Streamingerfassungsdaten nicht festgelegt werden.
- Aktualisierungsrichtlinie: Die Updaterichtlinie kann nur auf die neu erfassten Daten in der Quelltabelle und nicht auf andere Daten oder Tabellen in der Datenbank verweisen.
- Wenn eine Aktualisierungsrichtlinie mit einer Transaktionsrichtlinie fehlschlägt, fallen die Wiederholungen auf die Batchaufnahme zurück.
- 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 Clustern aktiviert werden, um Streamingerfassungsdaten zu folgen. Gleiches gilt für die Freigabe der Clusterdaten über Data Share.