Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’ingestion de streaming est utile pour charger des données lorsque vous avez besoin d’une faible latence entre l’ingestion et la requête. Envisagez d’utiliser l’ingestion de streaming dans les scénarios suivants :
- La latence de moins d’une seconde est requise.
- Pour optimiser le traitement opérationnel d’un grand nombre de tables, lorsque le flux de données de chaque table est relativement faible (quelques enregistrements par seconde), mais que le volume global d’ingestion de données est élevé (des milliers d’enregistrements par seconde).
Si le flux de données dans chaque table est élevé (plus de 4 Go par heure), envisagez d’utiliser l’ingestion par lots.
Pour en savoir plus sur les différentes méthodes d’ingestion, consultez la vue d’ensemble de l’ingestion des données.
Choisir le type d’ingestion de streaming approprié
Deux types d’ingestion de streaming sont pris en charge :
| Type d’ingestion | Description |
|---|---|
| Connexion de données | Les connexions de données Event Hub, IoT Hub et Event Grid peuvent utiliser l’ingestion de streaming, à condition qu’elles soient activées au niveau du cluster. La décision d’utiliser l’ingestion de streaming est effectuée en fonction de la stratégie d’ingestion de streaming configurée sur la table cible. Pour plus d’informations sur la gestion des connexions de données, consultez Event Hub, IoT Hub et Event Grid. |
| Ingestion personnalisée | L’ingestion personnalisée vous oblige à écrire une application qui utilise l’une des bibliothèques clientes Azure Data Explorer. Utilisez les informations de cette rubrique pour configurer l’ingestion personnalisée. Vous pouvez également trouver l’exemple d’application d’ingestion de streaming C# utile. |
Utilisez le tableau suivant pour vous aider à choisir le type d’ingestion approprié pour votre environnement :
| Critère | Connexion de données | Ingestion personnalisée |
|---|---|---|
| Délai de données entre l’initiation d’ingestion et les données disponibles pour la requête | Délai plus long | Délai plus court |
| Surcharge de développement | Configuration rapide et simple, aucune surcharge de développement | Surcharge de développement élevée pour créer une application ingérer les données, gérer les erreurs et garantir la cohérence des données |
Remarque
Vous pouvez gérer le processus pour activer et désactiver l’ingestion de streaming sur votre cluster à l’aide du portail Azure ou par programmation en C#. Si vous utilisez C# pour votre application personnalisée, vous pouvez le trouver plus pratique à l’aide de l’approche programmatique.
Conditions préalables
- Un abonnement Azure. Créez un compte Azure gratuit.
Considérations relatives aux performances et aux opérations
Les principaux contributeurs qui peuvent avoir un impact sur l’ingestion de streaming sont les suivants :
- Taille des machines virtuelles et des clusters : performances d’ingestion de streaming et échelles de capacité avec des tailles de machine virtuelle et de cluster accrues. Le nombre de requêtes d’ingestion simultanées est limité à six par cœur. Par exemple, pour 16 références SKU de base, telles que D14 et L16, la charge maximale prise en charge est de 96 demandes d’ingestion simultanées. Pour deux références SKU principales, telles que D11, la charge maximale prise en charge est de 12 demandes d’ingestion simultanées.
- Limite de taille des données : la limite de taille des données pour une demande d’ingestion de streaming est de 4 Mo. Cela inclut toutes les données créées pour les stratégies de mise à jour pendant l’ingestion.
- Mises à jour de schéma : les mises à jour de schéma, telles que la création et la modification des tables et des mappages d’ingestion, peuvent prendre jusqu’à cinq minutes pour le service d’ingestion de streaming. Pour plus d’informations, consultez Les modifications apportées à l’ingestion et au schéma de streaming.
- Capacité SSD : l'activation de l’ingestion en continu sur un cluster, même si les données ne sont pas ingérées de cette manière, utilise une partie du disque SSD local des machines du cluster pour l'ingestion des données en continu et réduit ainsi le stockage disponible pour le cache chaud.
Activer l’ingestion de streaming sur votre cluster
Avant de pouvoir utiliser l’ingestion de streaming, vous devez activer la fonctionnalité sur votre cluster et définir une stratégie d’ingestion de streaming. Vous pouvez activer la fonctionnalité lors de la création du cluster ou l’ajouter à un cluster existant.
Avertissement
Passez en revue les limitations avant d’activer l’ingestion de streaming.
Activer l’ingestion de streaming lors de la création d’un cluster
Vous pouvez activer l’ingestion de streaming lors de la création d’un cluster à l’aide du portail Azure ou par programmation en C#.
Lors de la création d’un cluster à l’aide des étapes de création d’un cluster et d’une base de données Azure Data Explorer, sous l’onglet Configurations, sélectionnez Ingestion> de streamingactivée.
Activer l’ingestion de streaming sur un cluster existant
Si vous disposez d’un cluster existant, vous pouvez activer l’ingestion de streaming à l’aide du portail Azure ou par programmation en C#.
Dans le portail Azure, accédez à votre cluster Azure Data Explorer.
Dans Paramètres, sélectionnez Configurations.
Dans le volet Configurations , sélectionnez Activé pour activer l’ingestion de streaming.
Cliquez sur Enregistrer.
Créer une table cible et définir la stratégie
Créez une table pour recevoir les données d’ingestion de streaming et définissez sa stratégie associée à l’aide du portail Azure ou par programmation en C#.
Dans le portail Azure, accédez à votre cluster.
Sélectionnez la requête .
Pour créer la table qui recevra les données via l’ingestion de streaming, copiez la commande suivante dans le volet Requête et sélectionnez Exécuter.
.create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
Copiez l’une des commandes suivantes dans le volet Requête et sélectionnez Exécuter. Cela définit la stratégie d’ingestion de streaming sur la table que vous avez créée ou sur la base de données qui contient la table.
Conseil / Astuce
Une stratégie définie au niveau de la base de données s’applique à toutes les tables existantes et futures de la base de données. Lorsque vous activez la stratégie au niveau de la base de données, il n’est pas nécessaire de l’activer par table.
Pour définir la stratégie sur la table que vous avez créée, utilisez :
.alter table TestTable policy streamingingestion enablePour définir la stratégie sur la base de données contenant la table que vous avez créée, utilisez :
.alter database StreamingTestDb policy streamingingestion enable
Créer une application d’ingestion de streaming pour ingérer des données dans votre cluster
Créez votre application pour ingérer des données sur votre cluster à l’aide de votre langue préférée.
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);
}
}
Désactiver l’ingestion de streaming sur votre cluster
Avertissement
La désactivation de l’ingestion de streaming peut prendre quelques heures.
Avant de désactiver l’ingestion de streaming sur votre cluster Azure Data Explorer, supprimez la stratégie d’ingestion de streaming de toutes les tables et bases de données pertinentes. La suppression de la stratégie d’ingestion de diffusion en continu déclenche la réorganisation des données à l’intérieur de votre cluster Azure Data Explorer. Les données d'ingestion en streaming sont déplacées du stockage initial vers le stockage permanent dans l'entrepôt de colonnes (extensions ou partitions). Ce processus peut prendre entre quelques secondes et quelques heures, en fonction de la quantité de données dans le stockage initial.
Supprimer la stratégie d’ingestion de streaming
Vous pouvez supprimer la stratégie d’ingestion de streaming à l’aide du portail Azure ou par programmation en C#.
Dans le portail Azure, accédez à votre cluster Azure Data Explorer, puis sélectionnez Requête.
Pour supprimer la stratégie d’ingestion de diffusion en continu à partir de la table, copiez la commande suivante dans le volet Requête et sélectionnez Exécuter.
.delete table TestTable policy streamingingestion
Dans Paramètres, sélectionnez Configurations.
Dans le volet Configurations , sélectionnez Désactivé pour désactiver l’ingestion de streaming.
Cliquez sur Enregistrer.
Limites
- Les mappages de données doivent être créés à l'avance pour être utilisés dans l’ingestion de streaming. Les demandes d’ingestion de streaming individuelles ne prennent pas en charge les mappages de données inline.
- Les balises d’étendue ne peuvent pas être définies sur les données d’ingestion de streaming.
- Mettre à jour la stratégie. La stratégie de mise à jour ne peut référencer que les données nouvellement ingérées dans la table source et non pas d’autres données ou tables de la base de données.
- Si l’ingestion de streaming est activée sur un cluster utilisé comme leader pour les bases de données de suivi, l’ingestion de streaming doit également être activée sur les clusters suivants pour suivre les données d’ingestion de streaming. La même chose s’applique si les données du cluster sont partagées via Data Share.