Compartir a través de


Configuración de la ingesta de streaming en el clúster de Azure Data Explorer

La ingesta de streaming es útil para cargar datos cuando necesite una latencia baja entre la ingesta y la consulta. Considere la posibilidad de usar la ingesta de streaming en los escenarios siguientes:

  • Se requiere una latencia de menos de un segundo.
  • Para optimizar el procesamiento operativo de muchas tablas donde el flujo de datos a cada tabla es relativamente pequeño (pocos registros por segundo), pero el volumen de ingesta de datos global es alto (miles de registros por segundo).

Si el flujo de datos en cada tabla es alto (más de 4 GB por hora), considere utilizar la ingestión en cola.

Para más información sobre los distintos métodos de ingesta, consulte la información general de ingesta de datos.

Para ver ejemplos de código basados en versiones anteriores del SDK, consulte el artículo archivado.

Selección del tipo de ingesta de streaming adecuado

Se admiten dos tipos de ingesta de streaming:

Tipo de ingesta Descripción
Conexión de datos Las conexiones de datos de Event Hubs, IoT Hub y Event Grid pueden usar la ingesta de streaming, siempre que esté habilitada en el nivel de clúster. La decisión de usar la ingestión en tiempo real se realiza de acuerdo con la política de ingestión en tiempo real configurada en la tabla de destino.
Para obtener información sobre cómo administrar conexiones de datos, consulte Centro de eventos, IoT Hub y Event Grid.
Ingesta personalizada La ingesta personalizada requiere que escriba una aplicación que use una de las bibliotecas cliente de Azure Data Explorer.
Use la información de este artículo para configurar la ingesta personalizada. También puede encontrar útil la aplicación de ejemplo para la ingestión de streaming C?view=azure-data-explorer&preserve-view=true#.

Use la tabla siguiente para ayudarle a elegir el tipo de ingesta adecuado para su entorno:

Criterio Conexión de datos Personalización de ingesta
Retraso de datos entre el inicio de la ingesta y los datos disponibles para la consulta Retraso más largo Retraso más corto
Sobrecarga de desarrollo Configuración rápida y sencilla, sin sobrecarga de desarrollo Alta sobrecarga de desarrollo para crear una aplicación que ingiera los datos, controle los errores y garantice la coherencia de los datos

Nota:

Puede administrar el proceso para habilitar y deshabilitar la ingesta de streaming en el clúster mediante Azure Portal o mediante programación en C#. Si usa C# para la aplicación personalizada, puede que le resulte más conveniente usar el enfoque mediante programación.

Requisitos previos

Consideraciones operativas y de rendimiento

Los principales factores que pueden afectar al procesamiento de datos en tiempo real son:

  • Tamaños de la máquina virtual y del clúster: el rendimiento y la capacidad de la ingesta de streaming se escalan cuando aumentan los tamaños de las máquinas virtuales y los clústeres. El número de solicitudes de ingesta simultáneas está limitado a seis por núcleo. Por ejemplo, en el caso de SKU de 16 núcleos, como D14 y L16, la carga máxima admitida es de 96 solicitudes de ingreso de datos simultáneos. En el caso de dos SKU de núcleos, como la D11, la carga máxima admitida es de 12 solicitudes de ingesta simultánea.
  • Límite de tamaño de los datos: el límite del tamaño de los datos para una solicitud de ingesta de streaming es de 4 MB. Esto incluye cualquier dato creado para las políticas de actualización durante la ingestión.
  • Actualizaciones de esquema: las actualizaciones de esquema, como la creación y modificación de tablas y los mapeos de ingesta, pueden tomar hasta cinco minutos en el servicio de ingesta de streaming. Para más información, consulte Ingesta de streaming y cambios de esquema.
  • Capacidad de SSD: cuando se habilita la ingesta de streaming en un clúster, incluso cuando los datos no se ingieren a través de streaming, se usa parte del disco SSD local de las máquinas del clúster para los datos de ingesta de streaming y se reduce el almacenamiento disponible para la caché activa.
  • Cursores de base de datos: al usar la ingesta de streaming, las actualizaciones del cursor de base de datos pueden retardar la disponibilidad de los datos hasta 60 segundos. Este retraso surge de procesos asincrónicos de sellado en segundo plano que transfieren los datos del búfer de streaming a extensiones permanentes en el almacén de columnas, durante los cuales se actualiza el cursor (usado para el procesamiento incremental, las exportaciones continuas o las vistas materializadas). Si la carga de trabajo requiere coherencia inmediata del cursor para la semántica exactamente una vez, considere la posibilidad de usar la ingesta en cola en su lugar o tenga en cuenta este posible retraso en la lógica de la aplicación.

Habilitar la ingesta de streaming en el clúster

Para poder usar la ingesta de streaming, debe habilitar la funcionalidad en el clúster y definir una directiva de ingesta de streaming. Puede habilitar la funcionalidad al crear el clúster o agregarla a un clúster existente.

Advertencia

Revise las limitaciones antes de habilitar la ingesta de streaming.

Habilitación de la ingesta de streaming al crear un nuevo clúster

Puede habilitar la ingesta de streaming al crear un nuevo clúster mediante Azure Portal o mediante programación en C#.

Durante la creación de un clúster mediante los pasos descritos en Creación de un clúster y una base de datos de Azure Data Explorer, en la pestaña Configuraciones, seleccione Ingesta de streaming>Activado.

Habilitación de la ingesta de streaming al crear un clúster de Azure Data Explorer.

Habilitación de la ingesta de streaming en un clúster existente

Si tiene un clúster ya existente, puede habilitar la ingesta de streaming mediante Azure Portal o mediante programación en C#.

  1. En Azure Portal, vaya al clúster de Azure Data Explorer.

  2. En Configuración, seleccione Configuraciones.

  3. En el panel Configuraciones, seleccione Activado para habilitar la ingesta de streaming.

  4. Seleccione Guardar.

    Activación de la ingesta de streaming en Azure Data Explorer.

Creación de una tabla de destino y definición de la directiva

Cree una tabla para recibir los datos de ingesta de streaming y defina su directiva relacionada mediante Azure Portal o mediante programación en C#.

  1. En Azure Portal, vaya al clúster.

  2. Seleccione Consulta.

    Selección de consulta en el portal de Azure Data Explorer para habilitar la ingesta de streaming.

  3. Para crear la tabla que recibirá los datos mediante ingesta de streaming, copie el siguiente comando en el panel Consulta y seleccione Ejecutar.

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

    Creación de una tabla para la ingesta de streaming en Azure Data Explorer.

  4. Copie uno de los siguientes comandos en el panel Consulta y seleccione Ejecutar. Esto define la directiva de ingesta de streaming en la tabla que ha creado o en la base de datos que contiene la tabla.

    Sugerencia

    Una directiva que se define en el nivel de base de datos se aplica a todas las tablas existentes y futuras de la base de datos. Al habilitar la directiva en el nivel de base de datos, no es necesario habilitarla por tabla.

    • Para definir la directiva en la tabla que ha creado, use:

      .alter table TestTable policy streamingingestion enable
      
    • Para definir la directiva en la base de datos que contiene la tabla que ha creado, use:

      .alter database StreamingTestDb policy streamingingestion enable
      

    Definición de la directiva de ingesta de streaming en Azure Data Explorer.

Crear una aplicación de ingesta por streaming que ingiera datos en tu clúster

Cree la aplicación para ingerir datos en el clúster con el lenguaje que prefiera.

Nota:

Para la ingestión en cola, consulte las instrucciones para crear una aplicación para obtener datos usando la ingestión en cola.

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

Deshabilitar la ingestión de streaming en su clúster

Advertencia

La deshabilitación de la ingesta de streaming puede tardar unas horas.

Antes de deshabilitar la ingesta de streaming en el clúster de Azure Data Explorer, quite la directiva de ingesta de streaming de todas las tablas y bases de datos pertinentes. La eliminación de la directiva de ingesta de streaming desencadena la reorganización de los datos dentro del clúster de Azure Data Explorer. Los datos de ingesta de streaming se trasladan del almacenamiento inicial al almacenamiento permanente en el almacén de columnas (extensiones o particiones). Este proceso puede tardar entre unos segundos y algunas horas, en función de la cantidad de datos existentes en el almacenamiento inicial.

Eliminación de la política de ingesta de streaming

Puede eliminar la directiva de ingesta de streaming mediante Azure Portal o mediante programación en C#.

  1. En Azure Portal, vaya al clúster de Azure Data Explorer y seleccione Consulta.

  2. Para quitar la directiva de ingesta de streaming de la tabla, copie el siguiente comando en el panel Consulta y seleccione Ejecutar.

    .delete table TestTable policy streamingingestion
    

    Eliminación de la directiva de ingesta de streaming en Azure Data Explorer.

  3. En Configuración, seleccione Configuraciones.

  4. En el panel Configuraciones, seleccione Desactivado para deshabilitar la ingesta de streaming.

  5. Seleccione Guardar.

    Desactivación de la ingesta de streaming en Azure Data Explorer.

Limitaciones

  • La asignación de datos debe estar precreada para su uso en la ingestión de datos por streaming. Las solicitudes individuales de ingesta de streaming no permiten mapas de datos en línea.
  • No se pueden establecer etiquetas de extensión en los datos de ingesta de streaming.
  • Actualizar directiva
    • La directiva de actualización solo puede hacer referencia a datos recién ingeridos en la tabla de origen y no a ningún otro dato o tabla de la base de datos.
    • No se admite el complemento de Python
    • Cuando se produce un error en una directiva de actualización con una directiva transaccional, los reintentos cambian a la ingesta por lotes.
    • Para las políticas de actualización en cascada que incluyen el operador join, debe deshabilitar la ingestión por streaming en todas las tablas ascendentes. Por ejemplo, considere las directivas de actualización en cascada en las que Table1 actualiza Table2, Table2 actualiza Table3 y Table3 actualiza Table4. Si la directiva de actualización de Table4 incluye una combinación, debe deshabilitar la ingesta de streaming en Table1, Table2 y Table3.
  • Si la ingesta de streaming está habilitada en un clúster utilizado como líder para las bases de datos seguidoras, la ingesta deberá estar habilitada también en los siguientes clústeres para seguir los datos de la ingesta de streaming. Lo mismo es aplicable si los datos del clúster se comparten mediante Data Share.