Agregar dados em Databricks
Este artigo apresenta a semântica geral da agregação e discute as diferenças entre os resultados computados usando lotes queries, materialized view e transmissão.
lotes agregados
A agregação de lotes é o comportamento default observado ao executar uma consulta ad hoc em SQL ou ao processar dados com Apache Spark DataFrames.
Uma consulta agregada escrita em uma tabela ou fonte de dados calcula as estatísticas agregadas de todos os registros na fonte de dados. Databricks aproveita as otimizações e os metadados sempre que possível para otimizar essas consultas e pode compute muitos agregados de forma eficiente para grandes conjuntos de dados.
A latência de agregação de lotes e os custos de compute podem aumentar à medida que o tamanho dos dados aumenta, e a pré-computação de valores agregados referenciados com frequência pode economizar muito tempo e dinheiro dos usuários. Databricks recomenda o uso da visualização materializada para atualizar os valores agregados de forma incremental. Consulte Agregados incrementais.
Agregados com estado
Os agregados definidos nas cargas de trabalho de transmissão são de estado. Os agregados com estado rastreiam os registros observados ao longo do tempo e recompõem os resultados ao processar novos dados.
O senhor deve usar marcas d'água ao calcular agregados com estado. A omissão de uma marca d'água em uma consulta agregada de estado resulta na acumulação infinita de informações de estado ao longo do tempo. Isso resulta em lentidão no processamento e pode levar a erros de falta de memória.
O senhor não deve usar um agregado com estado para calcular estatísticas sobre um site inteiro dataset. Databricks recomenda o uso da visualização materializada para o cálculo agregado incremental em um site inteiro dataset. Consulte Agregados incrementais.
A configuração de cargas de trabalho que compute agregados com estado de forma eficiente e correta requer a compreensão de como os dados chegam dos sistemas de origem e como o Databricks usa marcas d'água, modos de saída e intervalos de acionamento para controlar o estado da consulta e a computação dos resultados.
Agregados incrementais
O senhor pode usar a visualização materializada para compute muitos valores agregados de forma incremental. A visualização materializada rastreia automaticamente as alterações na fonte de dados e aplica as atualizações apropriadas aos valores agregados em refresh. Os resultados retornados por um view materializado são equivalentes àqueles retornados pela recomputação de resultados agregados em dados de origem com um trabalho em lote ou consulta ad hoc.
Agregados aproximados
Embora o site Databricks seja excelente na computação de conjuntos de dados extremamente grandes, o uso da aproximação para agregados pode acelerar o processamento de consultas e reduzir os custos quando o senhor não precisa de resultados precisos.
O uso de declarações LIMIT
às vezes é suficiente para obter uma Snapshot rápida de dados, mas não introduz aleatoriedade nem garante que a amostragem seja distribuída em dataset.
O Spark SQL tem os seguintes métodos nativos para aproximar agregações em dados numéricos ou categóricos:
O senhor também pode especificar uma porcentagem de amostra com TABLESAMPLE
para gerar uma amostra aleatória de um dataset e calcular agregados aproximados. Consulte a cláusula TABLESAMPLE.