Configurar ingestão de streaming no cluster do Azure Data Explorer

A ingestão de streaming é útil para carregar dados quando você precisa de baixa latência entre a ingestão e a consulta. Considere o uso da ingestão de streaming nos seguintes cenários:

  • A latência de menos de um segundo é necessária.
  • Para otimizar o processamento operacional de muitas tabelas em que o fluxo de dados em cada tabela é relativamente pequeno (alguns registros por segundo), mas o volume geral de ingestão de dados é alto (milhares de registros por segundo).

Se o fluxo de dados em cada tabela for alto (mais de 4 GB por hora), considere usar a ingestão em fila.

Para saber mais sobre métodos de ingestão diferentes, confira a visão geral de ingestão de dados.

Para obter exemplos de código com base em versões anteriores do SDK, consulte o artigo arquivado.

Escolha o tipo de ingestão de streaming adequado

Há suporte para dois tipos de ingestão de streaming:

Tipo de ingestão Descrição
Data connection As conexões de dados Hubs de Eventos, Hub IoT e Grade de Eventos podem usar a ingestão de streaming, desde que esteja habilitada no nível do cluster. A decisão de usar a ingestão de streaming é feita de acordo com a política de ingestão de streaming configurada na tabela de destino.
Para obter informações sobre como gerenciar conexões de dados, consulte Hub de Eventos, Hub IoT e Grade de Eventos.
Ingestão personalizada A ingestão personalizada requer que você escreva um aplicativo que use uma das bibliotecas de cliente do Azure Data Explorer.
Use as informações neste tópico para configurar a ingestão personalizada. O aplicativo de exemplo de ingestão de streaming no C# também pode ser útil.

Use a tabela a seguir para ajudar você a escolher o tipo de ingestão apropriado para seu ambiente:

Critério Data connection Ingestão personalizada
Atraso de dados entre o início da ingestão e os dados disponíveis para consulta Atraso maior Atraso menor
Sobrecarga de desenvolvimento Configuração rápida e fácil, sem sobrecarga de desenvolvimento Alta sobrecarga de desenvolvimento para criar um aplicativo, ingerir os dados, tratar erros e garantir a consistência dos dados

Observação

Você pode gerenciar o processo para habilitar e desabilitar a ingestão de streaming em seu cluster usando o portal do Azure ou programaticamente no C#. Se você estiver usando o C# para o seu aplicativo personalizado, talvez seja mais conveniente usar a abordagem programática.

Pré-requisitos

Considerações operacionais e de design

Os principais fatores que podem afetar a ingestão de streaming são:

  • Tamanho de cluster e VM: o desempenho e a capacidade da ingestão de streaming escala de acordo com os tamanhos maiores de VM e cluster. O número de solicitações de ingestão simultâneas é limitado a seis por núcleo. Por exemplo, para SKUs de 16 núcleos, como D14 e L16, a carga máxima com suporte é de 96 solicitações de ingestão simultâneas. Para SKUs de dois núcleos, como D11, a carga máxima com suporte é de 12 solicitações de ingestão simultâneas.
  • Limite do tamanho dos dados: o limite do tamanho dos dados de uma solicitação de ingestão de streaming é de 4 MB. Isso inclui todos os dados criados para políticas de atualização durante a ingestão.
  • Atualizações de esquema: as atualizações de esquema, como criação e modificação de tabelas e mapeamentos de ingestão, podem levar até cinco minutos para o serviço de ingestão de streaming. Para obter mais informações, consulte Ingestão de streaming e alterações de esquema.
  • Capacidade do SSD: habilitar a ingestão de streaming em um cluster, mesmo quando os dados não são ingeridos por streaming, ocasiona o uso de parte do disco SSD local dos computadores do cluster para os dados da ingestão de streaming e reduz o armazenamento disponível para o cache de acesso frequente.

Habilitar ingestão de streaming no cluster

Para usar a ingestão de streaming, habilite a funcionalidade em seu cluster e defina uma política de ingestão de streaming. Você pode habilitar a funcionalidade ao criar o cluster ou adicioná-la a um cluster existente.

Aviso

Examine as limitações antes de habilitar a ingestão de streaming.

Habilitar ingestão de streaming ao criar um novo cluster

Você pode habilitar a ingestão de streaming ao criar um cluster usando o portal do Azure ou programaticamente no C#.

Ao criar um cluster usando as etapas em Criar um cluster e um banco de dados do Azure Data Explorer, na guia Configurações, selecione Ingestão de streaming>Ativada.

Habilitar ingestão de streaming ao criar um cluster no Azure Data Explorer.

Habilitar ingestão de streaming em um cluster existente

Se você já tem um cluster, habilite a ingestão de streaming usando o portal do Azure ou programaticamente no C#.

  1. No portal do Azure, acesse o cluster do Azure Data Explorer.

  2. Em Configurações, selecione Configurações.

  3. No painel Configurações, selecione Ativado para habilitar a Ingestão de streaming.

  4. Selecione Salvar.

    Ative a ingestão de streaming no Azure Data Explorer.

Criar uma tabela de destino e definir a política

Crie uma tabela para receber os dados de ingestão de streaming e defina a política relacionada usando o portal do Azure ou programaticamente no C#.

  1. No portal do Azure, navegue até o cluster.

  2. Selecione Consulta.

    Selecione a consulta no portal do Azure Data Explorer para habilitar a ingestão de streaming.

  3. Para criar a tabela que receberá os dados usando a ingestão de streaming, copie o comando a seguir no painel Consulta e selecione Executar.

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

    Crie uma tabela para ingestão de streaming no Azure Data Explorer.

  4. Copie um dos comandos a seguir no painel Consulta e selecione Executar. Isso define a política de ingestão de streaming na tabela criada ou no banco de dados que contém a tabela.

    Dica

    Uma política definida no nível do banco de dados se aplica a todas as tabelas existentes e futuras no banco de dados. Quando você habilita a política no nível do banco de dados, não há necessidade de habilitá-la por tabela.

    • Para definir a política na tabela que você criou, use:

      .alter table TestTable policy streamingingestion enable
      
    • Para definir a política no banco de dados que contém a tabela que você criou, use:

      .alter database StreamingTestDb policy streamingingestion enable
      

    Defina a política de ingestão de streaming no Azure Data Explorer.

Criar um aplicativo de ingestão de streaming para ingerir dados para o seu cluster

Crie seu aplicativo para ingerir dados para o seu cluster usando sua linguagem preferida.

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

Desabilitar a ingestão de streaming no cluster

Aviso

Desabilitar a ingestão de streaming pode levar algumas horas.

Antes de desabilitar a ingestão de streaming no cluster do Azure Data Explorer, remova a política de ingestão de streaming de todas as tabelas e bancos de dados relevantes. A remoção da política de ingestão de streaming dispara a reorganização de dados no cluster do Azure Data Explorer. Os dados de ingestão de streaming são movidos do armazenamento inicial para o armazenamento permanente no repositório de coluna (extensões ou fragmentos). Esse processo pode levar entre alguns segundos a algumas horas, dependendo da quantidade de dados no armazenamento inicial.

Remover a política de ingestão de streaming

Você pode remover a política de ingestão de streaming usando o portal do Azure ou programaticamente no C#.

  1. No portal do Azure, acesse o cluster do Azure Data Explorer e selecione Consulta.

  2. Para soltar a política de ingestão de streaming na tabela, copie o comando a seguir no painel Consulta e selecione Executar.

    .delete table TestTable policy streamingingestion
    

    Exclua a política de ingestão de streaming no Azure Data Explorer.

  3. Em Configurações, selecione Configurações.

  4. No painel Configurações, selecione Desativado para desabilitar a Ingestão de streaming.

  5. Selecione Salvar.

    Desative a ingestão de streaming no Azure Data Explorer.

Limitações

  • Os Mapeamentos de dados devem ser pré-criados para uso na ingestão de streaming. Solicitações de ingestão de streaming individuais não acomodam mapeamentos de dados em linha.
  • As marcas de extensão não podem ser definidas nos dados de ingestão de streaming.
  • Atualizar política. A política de atualização pode mencionar apenas os dados recém-ingeridos na tabela de origem e não quaisquer outros dados ou tabelas no banco de dados.
  • Quando uma política de atualização com uma política transacional falhar, as novas tentativas retornarão à ingestão em lote.
  • Se a ingestão de streaming estiver habilitada em um cluster usado como líder para bancos de dados de acompanhamento, a ingestão de streaming deverá ser habilitada nos clusters a seguir, bem como seguir os dados de ingestão de streaming. O mesmo se aplica se os dados do cluster são compartilhados por meio do Data Share.