Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 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 exemplos de código baseados 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 |
|---|---|
| Conexão de dados | Os Hubs de Eventos, o Hub IoT e as conexões de dados da Grade de Eventos podem usar a ingestão de streaming, desde que ela esteja habilitada no nível do cluster. A decisão de usar ingestão de streaming é tomada 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 Event Hub, IoT Hub e Event Grid. |
| Ingestão personalizada | A ingestão personalizada exige que você escreva um aplicativo que use uma das bibliotecas de cliente do Azure Data Explorer. Use as informações neste artigo para configurar a ingestão personalizada. Você também pode achar útil o C?view=azure-data-explorer&preserve-view=true# aplicativo de exemplo de ingestão de streaming. |
Use a tabela a seguir para ajudar você a escolher o tipo de ingestão apropriado para seu ambiente:
| Critério | Conexão de dados | 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 seu aplicativo personalizado, talvez seja mais conveniente usar a abordagem programática.
Pré-requisitos
- Uma assinatura do Azure. Criar uma conta gratuita do Azure.
Considerações operacionais e de design
Os principais fatores que podem afetar a ingestão de streaming são:
- Tamanho de VM e cluster: o desempenho e a capacidade da ingestão de streaming escalam 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 quaisquer 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 via streaming, usa parte do disco SSD local das máquinas do cluster para os dados da ingestão de streaming e reduz o armazenamento disponível para o cache quente.
- Cursores de banco de dados: Ao usar a ingestão de streaming, as atualizações do cursor de banco de dados podem ser atrasadas em relação à disponibilidade de dados em até 60 segundos. Esse atraso decorre de processos assíncronos de vedação em segundo plano que fazem a transição de dados do buffer de streaming para extensões permanentes de armazenamento de colunas, durante os quais o cursor (usado para processamento incremental, exportações contínuas ou exibições materializadas) é atualizado. Se sua carga de trabalho exigir consistência imediata do cursor para semântica exatamente uma vez, considere usar a ingestão em fila ou ajustar a lógica do seu aplicativo para esse possível atraso.
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
Revise 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 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#.
No portal do Azure, acesse o cluster do Azure Data Explorer.
Em Configurações, selecione Configurações.
No painel Configurações, selecione Ativado para habilitar a Ingestão de streaming.
Selecione Salvar.
Criar uma tabela alvo e estabelecer 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#.
No portal do Azure, navegue até o cluster.
Selecione Consulta.
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)
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 é necessário habilitá-la por tabela.
Para definir a política na tabela que você criou, use:
.alter table TestTable policy streamingingestion enablePara 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 cluster
Crie seu aplicativo para ingerir dados para o seu cluster usando sua linguagem preferida.
Observação
Para ingestão em fila, consulte as instruções para criar um aplicativo para obter dados usando a ingestão em fila
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#.
No portal do Azure, acesse o cluster do Azure Data Explorer e selecione Consulta.
Para remover a política de ingestão de streaming da tabela, copie o comando a seguir no painel de consultas e selecione Executar.
.delete table TestTable policy streamingingestion
Em Configurações, selecione Configurações.
No painel Configurações, selecione Desativado para desabilitar a Ingestão de streaming.
Selecione Salvar.
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.
-
Política de atualização
- A política de atualização só pode referenciar dados recém-ingeridos na tabela de origem e não outros dados ou tabelas no banco de dados
- Não há suporte para plug-in do Python
- Quando uma política de atualização com uma política transacional falha, as novas tentativas retornam à ingestão em lote.
- Para políticas de atualização em cascata que incluem um
joinoperador, você deve desabilitar a ingestão de streaming em todas as tabelas upstream. Por exemplo, considere políticas de atualização em cascata em que Table1 atualiza Table2, Table2 atualiza Table3 e Table3 atualiza Table4. Se a política de atualização do Table4 incluir uma junção, você deverá desabilitar a ingestão de streaming em Table1, Table2 e Table3.
- Se a ingestão de streaming estiver habilitada em um cluster utilizado como líder para bancos de dados seguidores, a ingestão de streaming também deverá ser habilitada nos clusters seguintes para 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.