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.
Uma tabela de streaming é uma tabela Delta com suporte adicional para streaming ou processamento de dados incrementais. Uma tabela de streaming pode ser direcionada por um ou mais fluxos em um pipeline.
Para obter diretrizes sobre quando usar tabelas de streaming versus exibições ou exibições materializadas, consulte O que são pipelines?.
As tabelas de streaming são uma boa opção para ingestão de dados pelos seguintes motivos:
- Cada linha de entrada é manipulada apenas uma vez, o que modela a grande maioria das cargas de trabalho de ingestão (ou seja, acrescentando ou inserindo linhas em uma tabela).
- Elas podem lidar com grandes volumes de dados somente acréscimo.
As tabelas de streaming também são uma boa opção para transformações de streaming de baixa latência porque podem raciocinar sobre linhas e janelas de tempo, lidar com grandes volumes de dados e fornecer processamento de baixa latência.
O diagrama a seguir mostra como os fluxos leem de fontes de streaming e gravam incrementalmente em uma tabela de streaming dentro de um pipeline.
Em cada atualização, os fluxos associados a uma tabela de streaming leem as informações alteradas em uma fonte de streaming e acrescentam novas informações a essa tabela.
As tabelas de streaming são de propriedade e atualizadas por um único pipeline. Você define explicitamente tabelas de streaming no código-fonte do pipeline. Tabelas definidas por um pipeline não podem ser alteradas ou atualizadas por nenhum outro pipeline. Você pode definir vários fluxos para acrescentar a uma única tabela de streaming.
O Azure Databricks cria tabelas internas para dar suporte ao processamento de tabelas de transmissão contínua. Essas tabelas aparecem em system.information_schema.tables, mas não estão visíveis no Gerenciador de Catálogos ou em outras páginas da interface do usuário do ambiente de trabalho.
Note
Quando você cria uma tabela de streaming autônoma, fora de um pipeline do Lakeflow, o Azure Databricks cria um pipeline usado para atualizar a tabela. Você pode ver o pipeline selecionando Trabalhos & Pipelines no menu à esquerda em seu workspace. Você pode adicionar a coluna Tipo de pipeline à sua exibição. As tabelas de streaming definidas em um pipeline têm um tipo de ETL. Tabelas de streaming independentes têm um tipo de MV/ST.
Para obter mais informações sobre fluxos, consulte Carregar e processar dados incrementalmente com fluxos de pipeline do Lakeflow.
Tabelas de streaming para ingestão
As tabelas de streaming são projetadas para fontes de dados somente acréscimo e entradas de processo apenas uma vez. Isso os torna adequados para cargas de trabalho de ingestão em que os dados chegam continuamente e devem ser capturados de forma confiável sem reprocessar registros existentes. O Azure Databricks oferece suporte à ingestão em tabelas de streaming a partir do armazenamento de objetos na nuvem (usando o Carregador Automático) e de barramentos de mensagens em streaming, como Apache Kafka, Hubs de Eventos do Azure e Google Pub/Sub. Para obter instruções de ingestão e exemplos de código, consulte Carregar dados em pipelines.
Note
Para transmitir dados de origem que são alterados ao longo do tempo (por exemplo, registros que são atualizados ou excluídos na origem), use AUTO CDC para aplicar essas alterações a uma tabela de streaming em vez de acrescentá-las. Consulte Captura de alterações e instantâneos de dados.
O diagrama a seguir ilustra como as tabelas de streaming somente acréscimo funcionam.
Uma linha que já foi anexada a uma tabela de streaming não será consultada novamente com atualizações posteriores para o pipeline. Se você modificar a consulta (por exemplo, de SELECT LOWER (name) para SELECT UPPER (name)), as linhas existentes não serão atualizadas para serem maiúsculas, mas novas linhas serão maiúsculas. Você pode disparar uma atualização completa para todos os dados anteriores da tabela de origem para atualizar todas as linhas na tabela de streaming.
Tabelas de streaming e streaming de baixa latência
As tabelas de streaming são projetadas para streaming de baixa latência em relação ao estado limitado. As tabelas de streaming usam o gerenciamento de ponto de verificação, o que as torna adequadas para streaming de baixa latência. No entanto, eles esperam fluxos que são naturalmente limitados ou limitados com uma marca d'água.
Um fluxo naturalmente limitado é produzido por uma fonte de dados de streaming que tem um início e um término bem definidos. Um exemplo de um fluxo naturalmente limitado é ler dados de um diretório de arquivos em que nenhum novo arquivo está sendo adicionado depois que um lote inicial de arquivos é colocado. O fluxo é considerado limitado porque o número de arquivos é finito e o fluxo termina depois que todos os arquivos são processados.
Você também pode usar uma marca d'água para associar um fluxo. Uma marca d'água no Streaming Estruturado é um mecanismo que ajuda a lidar com dados atrasados, especificando por quanto tempo o sistema deve esperar por eventos atrasados antes de considerar a janela de tempo como concluída. Um fluxo não associado que não tem uma marca d'água pode fazer com que um pipeline falhe devido à demanda de memória.
Para cargas de trabalho operacionais que precisam da menor latência possível, você pode executar o pipeline no modo em tempo real para processar registros com latência de ponta a ponta de sub-segundo.
Para obter mais informações, consulte:
- Usar o modo em tempo real em pipelines do Lakeflow
- Otimizar o processamento com estado utilizando marcas d'água
Limitações da tabela de streaming
As tabelas de streaming têm as seguintes limitações:
-
Evolução limitada: Você pode alterar a consulta sem recompusar todo o conjunto de dados. Sem uma atualização completa, uma tabela de streaming só vê cada linha uma vez, portanto, consultas diferentes terão linhas diferentes processadas. Por exemplo, se você adicionar
UPPER()a um campo na consulta, somente as linhas processadas após a alteração estarão em letras maiúsculas. Isso significa que você deve estar ciente de todas as versões anteriores da consulta que estão em execução em seu conjunto de dados. Para reprocessar linhas existentes que foram processadas antes da alteração, uma atualização completa é necessária. - Gerenciamento de estado: as tabelas de streaming são de baixa latência e exigem fluxos naturalmente limitados ou limitados com uma marca d'água. Para obter mais informações, consulte Otimizar o processamento com estado utilizando marcas d'água.
- As junções não são recomputadas: As junções em tabelas de streaming não são recomputadas quando as dimensões são alteradas. Essa característica pode ser boa para cenários "rápidos, mas errados". Se você quiser que sua visão esteja sempre correta, pode utilizar uma visão materializada. As exibições materializadas estão sempre corretas porque recomputam automaticamente as junções quando as dimensões são alteradas. Para obter mais informações, veja Exibições materializadas. Para obter um exemplo de junção de um fluxo a uma tabela de dimensões estáticas, consulte Junções estáticas do Stream.
-
Sem
CLONEsuporte: as tabelas de streaming não podem ser usadas como origem nem como destino de um clone profundo ou superficial. Para outros comandos sem suporte, consulte Limitações. -
REFRESHprivilégio necessário para exibir o pipeline: Para exibir o pipeline subjacente a uma tabela de streaming, um usuário não administrador precisa ter o privilégioREFRESHna tabela de streaming, além das permissões no pipeline. Consulte Quem pode visualizar um pipeline e sua saída?.