Compartilhar via


Agregar dados no Azure Databricks

Este artigo apresenta a semântica geral de agregação e discute as diferenças entre os resultados computados usando consultas em lote, exibições materializadas e streaming.

Agregações em lote

A agregação em lote é o comportamento padrão observado ao executar uma consulta ad hoc no SQL ou no processamento de dados com o Apache Spark DataFrames.

Uma consulta agregada gravada em uma tabela ou fonte de dados computa as estatísticas de agregação de todos os registros na fonte de dados. O Azure Databricks aproveita otimizações e metadados sempre que possível para otimizar essas consultas e pode computar muitas agregações eficientemente para grandes conjuntos de dados.

A latência de agregação em lote e os custos de computação podem aumentar à medida que o tamanho dos dados aumenta e os valores agregados referenciados com frequência pré-computados podem economizar tempo e dinheiro substanciais aos usuários. O Databricks recomenda o uso de exibições materializadas para atualizar incrementalmente os valores agregados. Veja Agregações incrementais.

Agregações com estado

As agregações definidas em tarefas de streaming são com estado. As agregações com estado acompanham os registros observados ao longo do tempo e recomputam os resultados ao processar novos dados.

Você deve usar marcas d'água ao calcular agregados com estado. Omitir uma marca d'água de uma consulta agregada com estado resulta em informações de estado acumuladas infinitamente ao longo do tempo. Isto resulta em lentidão no processamento e pode levar a erros de falta de memória.

Você não deve usar uma agregação com estado para calcular estatísticas em um conjunto de dados inteiro. O Databricks recomenda o uso de exibições materializadas para cálculo de agregação incremental em um conjunto de dados inteiro. Veja Agregações incrementais.

Configurar cargas de trabalho que computam agregações com estado de forma eficiente e correta requer a compreensão de como os dados chegam de sistemas de origem e como o Azure Databricks usa marcas d'água, modos de saída e intervalos de gatilho para controlar o estado da consulta e a computação de resultados.

Agregações incrementais

Você pode usar exibições materializadas para calcular muitos valores agregados de forma incremental. Exibições materializadas rastreiam automaticamente as alterações na fonte de dados e aplicam atualizações apropriadas aos valores agregados na atualização. Os resultados retornados por uma visão materializada são equivalentes aos retornados pela recomputação de resultados agregados nos dados de origem com uma tarefa em lote ou consulta ad hoc.

Agregações aproximadas

Embora o Azure Databricks se destaque na computação em conjuntos de dados extremamente grandes, o uso da aproximação para agregações pode acelerar o processamento de consultas e reduzir os custos quando você não precisar de resultados precisos.

Usar instruções LIMIT às vezes é suficiente para capturar uma visão rápida dos dados; no entanto, isso não introduz aleatoriedade nem garante que a amostragem seja distribuída de forma uniforme pelo conjunto de dados.

O SPARK SQL tem os seguintes métodos nativos para aproximação de agregações em dados numéricos ou categóricos:

Você também pode especificar uma porcentagem de exemplo com TABLESAMPLE para gerar uma amostra aleatória de um conjunto de dados e calcular agregações aproximadas. Consulte a cláusula TABLESAMPLE.

Monitorar conjuntos de dados usando estatísticas agregadas

A criação de perfil de dados usa estatísticas agregadas e distribuições de dados para acompanhar a qualidade dos dados ao longo do tempo. Você pode gerar relatórios para visualizar tendências e agendar alertas para sinalizar alterações inesperadas nos dados. Consulte a criação de perfil de dados.