Compartilhar via


Configurar ingestão de streaming no pool do Azure Synapse Data Explorer (Versão prévia)

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 lote.

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

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
Hub de Eventos ou Hub IoT Os hubs são configurados como fontes de dados de streaming de tabela.
Para obter informações sobre como configurá-los, confira Hub de Eventos.
Ingestão personalizada A ingestão personalizada exige que você grave um aplicativo que usa uma das bibliotecas de clientes do Azure Synapse 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 Hub de Eventos/Hub IoT 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

A ingestão de dados de um Hub de Eventos em pools do Data Explorer não funcionará se o seu workspace do Synapse usar uma rede virtual gerenciada com a proteção de exfiltração dos dados habilitada.

Pré-requisitos

  • Uma assinatura do Azure. Criar uma conta gratuita do Azure.

  • Criar um pool do Data Explorer usando o Synapse Studio ou o portal do Azure

  • Criar um banco de dados do Data Explorer.

    1. No Synapse Studio, no painel esquerdo, selecione Dados.

    2. Selecione + (Adicionar novo recurso) >Pool do Data Explorer e use as seguintes informações:

      Configuração Valor sugerido Descrição
      Nome do pool contosodataexplorer O nome do pool do Data Explorer a ser usado
      Nome TestDatabase O nome do banco de dados deve ser exclusivo dentro do cluster.
      Período de retenção padrão 365 O período de tempo (em dias) durante o qual há a garantia de que os dados serão mantidos disponíveis para consulta. O período é medido a partir do momento em que os dados são incluídos.
      Período de cache padrão 31 O período de tempo (em dias) durante o qual os dados consultados com frequência devem ser mantidos disponíveis no armazenamento SSD ou RAM, em vez de no armazenamento de longo prazo.
    3. Selecione Criar para criar o banco de dados. A criação geralmente leva menos de um minuto.

  • Obtenha os pontos de extremidade de Consulta e Ingestão de Dados.
    1. No Synapse Studio, no painel do lado esquerdo, selecione Gerenciar>Pools do Data Explorer.

    2. Selecione o pool do Data Explorer que você deseja usar para exibir os detalhes correspondentes.

      Captura de tela de pools do Data Explorer, mostrando a lista de pools existentes.

    3. Anote os pontos de extremidade de Consulta e Ingestão de Dados. Use o ponto de extremidade de Consulta como o cluster ao configurar conexões com seu pool do Data Explorer. Ao configurar SDKs para ingestão de dados, use o ponto de extremidade de ingestão de dados.

      Captura de tela do painel de propriedades de pools do Data Explorer, mostrando os endereços de URI de Consulta e Ingestão de Dados.

Considerações operacionais e de design

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

  • Especificação de computação: escala de desempenho e capacidade de ingestão de streaming com tamanhos maiores de pool do Data Explorer. O número de solicitações de ingestão simultâneas é limitado a seis por núcleo. Por exemplo, para um tipo de carga de trabalho com 16 núcleos, como Computação Otimizada (Grande) e Otimizado para Armazenamento (Grande), a carga máxima suportada é de 96 solicitações de ingestão simultâneas. Para um tipo de carga de trabalho com dois núcleos, como Computação Otimizada (Extra Pequena), a carga máxima suportada é 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.
  • 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 pool do Data Explorer, mesmo quando os dados não são ingeridos por streaming, ocasiona o uso de parte do disco SSD local dos computadores do pool do Data Explorer para os dados da ingestão de streaming e reduz o armazenamento disponível para o cache de acesso frequente.

Habilitar a ingestão de streaming em seu pool do Data Explorer

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

Aviso

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

Habilitar ingestão de streaming ao criar um novo pool do Data Explorer

Você pode habilitar a ingestão de streaming ao criar um pool do Data Explorer usando o Azure Synapse Studio ou o portal do Azure.

Ao criar um pool do Data Explorer usando as etapas em Criar um pool do Data Explorer usando o Synapse Studio, na guia Configurações Adicionais, selecione Ingestão de streaming>Habilitada.

Habilite a ingestão de streaming ao criar um pool do Data Explorer no Azure Synapse Data Explorer.

Habilitar a ingestão de streaming em um pool existente do Data Explorer

Se você tiver um pool existente do Data Explorer, poderá habilitar a ingestão de streaming usando o portal do Azure.

  1. No portal do Azure, acesse o pool do 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.

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 Azure Synapse Studio ou o portal do Azure.

  1. No Synapse Studio, no painel do lado esquerdo, selecione Desenvolver.

  2. Em Scripts KQL, selecione + (Adicionar novo recurso) >Script KQL. No painel do lado direito, você pode nomear o script.

  3. No menu Conexão, selecione contosodataexplorer.

  4. No menu Usar banco de dados, selecione TestDatabase.

  5. Cole o comando a seguir e selecione Executar para criar uma tabela.

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    
  6. 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.

    • 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
      

Criar um aplicativo de ingestão de streaming para ingerir dados para o seu pool do Data Explorer

Crie seu aplicativo para ingerir dados para o seu pool do Data Explorer usando sua linguagem preferida. Para a variável poolPath, use o ponto de extremidade de consulta anotado nos Pré-requisitos.

using Kusto.Data;
using Kusto.Ingest;
using System.IO;
using Kusto.Data.Common;

namespace StreamingIngestion
{
    class Program
    {
        static void Main(string[] args)
        {
            string poolPath = "https://<Poolname>.<WorkspaceName>.kusto.windows.net";
            string appId = "<appId>";
            string appKey = "<appKey>";
            string appTenant = "<appTenant>";
            string dbName = "<dbName>";
            string tableName = "<tableName>";

            // Create Kusto connection string with App Authentication
            var csb =
                new KustoConnectionStringBuilder(poolPath)
                    .WithAadApplicationKeyAuthentication(
                        applicationClientId: appId,
                        applicationKey: appKey,
                        authority: appTenant
                    );

            // Create a disposable client that will execute the ingestion
            using (IKustoIngestClient client = KustoIngestFactory.CreateStreamingIngestClient(csb))
            {
                // Initialize client properties
                var ingestionProperties =
                    new KustoIngestionProperties(
                        databaseName: dbName,
                        tableName: tableName
                    );

                // Ingest from a compressed file
                var fileStream = File.Open("MyFile.gz", FileMode.Open);
                // Create source options
                var sourceOptions = new StreamSourceOptions()
                {
                    CompressionType = DataSourceCompressionType.GZip,
                };
                // Ingest from stream
                var status = client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions).GetAwaiter().GetResult();
            }
        }
    }
}

Desabilitar a ingestão de streaming em seu pool do Data Explorer

Aviso

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

Antes de desabilitar a ingestão de streaming no pool do 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 pool do 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 Azure Synapse Studio ou o portal do Azure.

  1. No Synapse Studio, no painel do lado esquerdo, selecione Desenvolver.

  2. Em Scripts KQL, selecione + (Adicionar novo recurso) >Script KQL. No painel do lado direito, você pode nomear o script.

  3. No menu Conexão, selecione contosodataexplorer.

  4. No menu Usar banco de dados, selecione TestDatabase.

  5. Cole o comando a seguir e selecione Executar para criar uma tabela.

    .delete table TestTable policy streamingingestion
    
  6. No portal do Azure, acesse o pool do Data Explorer.

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

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

  9. Selecione Salvar.

Limitações

  • Não há suporte para cursores de banco de dados em um banco de dados se o próprio banco de dados ou qualquer uma de suas tabelas tiver definido e habilitado a política de ingestão de streaming.
  • 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 referenciar apenas os dados recém-ingeridos na tabela de origem e não quaisquer outros dados ou tabelas no banco de dados.
  • Se a ingestão de streaming for usada em qualquer uma das tabelas do banco de dados, esse banco de dados não poderá ser usado como líder para bancos de dados seguidores ou como um provedor de dados para o Azure Synapse Analytics Data Share.

Próximas etapas