O que são transformações de dados em Databricks?
A transformação de dados é o processo de conversão, limpeza e estruturação de dados em um formato utilizável. As transformações de dados normalmente seguem a Databricks arquitetura do medalhão de refinamento incremental dos dados brutos em um formato consumível pela empresa.
O diagrama a seguir mostra um pipeline de dados contendo uma série de transformações de dados que transformam o raw_customers
dataset no clean_customers
dataset, eliminando dados do cliente sem nome de cliente neste exemplo. Os dados raw_transactions
são transformados em clean_transactions
eliminando transações com valor de zero dólar. A dataset resultante, chamada sales_report
, é a união de clean_customers
e clean_transactions
. O analista pode usar sales_report
para analítica e Business Intelligence.
Este artigo se concentra na definição de transformações relacionadas ao T em ETL ou ELT. O modelo de processamento Apache Spark também usa a palavra transformações de forma relacionada. Veja as transformações e ações do Spark.
Tipos de transformações de dados
A Databricks considera dois tipos de transformações de dados: declarativa e processual . O pipeline de dados no exemplo anterior pode ser expresso usando qualquer um dos paradigmas.
As transformações declarativas concentram-se no resultado desejado e não em como alcançá-lo. O senhor especifica a lógica das transformações usando abstrações de nível superior, e a DLT determina a maneira mais eficiente de executá-la.
As transformações de dados processuais concentram-se na realização de cálculos por meio de instruções explícitas. Esses cálculos definem a sequência exata de operações para manipular os dados. A abordagem processual fornece mais controle sobre a execução, mas ao custo de maior complexidade e maior manutenção.
Escolher entre transformações de dados declarativas e processuais
As transformações de dados declarativos usando a DLT são melhores quando o senhor está em uma situação em que a transformação de dados declarativos é mais fácil:
- Você precisa de desenvolvimento e implantação rápidos.
- Seu pipeline de dados tem padrões padrão que não exigem controle de baixo nível sobre a execução.
- O senhor precisa de verificações integradas da qualidade dos dados.
- Manutenção e legibilidade são as principais prioridades.
As transformações de dados procedimentais usando o código Apache Spark são melhores quando o senhor está em uma situação em que o código é mais adequado:
- O senhor está migrando uma base de código existente do Apache Spark para a Databricks.
- Você precisa de um controle refinado sobre a execução.
- O senhor precisa de acesso a APIs de baixo nível, como
MERGE
ouforeachBatch
. - O senhor precisa gravar dados no Kafka ou em tabelas Delta externas.
Quais são as diferenças entre transmissão e processamento de lotes?
Embora a transmissão e o processamento de lotes usem muito da mesma sintaxe em Databricks, cada um tem sua própria semântica específica.
O processamento de lotes permite que o senhor defina instruções explícitas para processar uma quantidade fixa de dados estáticos e imutáveis como uma única operação.
O processamento de transmissão permite que o senhor defina uma consulta em um dataset ilimitado e em crescimento contínuo e, em seguida, processe os dados em lotes pequenos e incrementais.
Muitas operações em Databricks usam Spark SQL ou DataFrames, enquanto o processamento de transmissão aproveita a transmissão estruturada.
O senhor pode diferenciar lotes Apache Spark comando da transmissão estruturada observando as operações de leitura e gravação, conforme mostrado na tabela a seguir:
Apache Spark | Transmissão estruturada | |
---|---|---|
Ler |
|
|
Gravar |
|
|
A visualização materializada geralmente está em conformidade com as garantias de processamento de lotes, embora a DLT seja usada para calcular os resultados de forma incremental quando possível. Os resultados retornados por um view materializado são sempre equivalentes à avaliação de lotes de lógica, mas o Databricks procura processar esses resultados de forma incremental quando possível.
As tabelas de transmissão sempre calculam os resultados de forma incremental. Como muitas fontes de dados de transmissão retêm registros apenas por um período de horas ou dias, o modelo de processamento usado pelas tabelas de transmissão pressupõe que cada lote de registros de uma fonte de dados seja processado apenas uma vez.
Databricks suporta o uso do site SQL para escrever consultas de transmissão nos seguintes casos de uso:
- Definição de tabelas de transmissão em Unity Catalog usando Databricks SQL.
- Definição do código-fonte para o pipeline DLT.
O senhor também pode declarar tabelas de transmissão em DLT usando o código Python transmissão estructurada.
lotes transformações
Muitas transformações operam em um conjunto bem definido de dados ativos em um ponto específico no tempo. Muitas transformações podem ser operações únicas, mas geralmente fazem parte de um trabalho ou pipeline programado que é executado regularmente para manter os sistemas de produção atualizados.
Transformações incrementais
Em geral, os padrões incrementais pressupõem que a fonte de dados é somente de anexo e tem um esquema estável. Os artigos a seguir fornecem detalhes sobre as nuances das transformações incrementais em tabelas que sofrem atualizações, exclusões ou alterações de esquema:
- A página APPLY CHANGES APIs: Simplifique a captura de dados de alterações (CDC) com DLT
- Usar o feed de dados de alteração do Delta Lake no Databricks
- Atualizar o esquema da tabela Delta Lake
- Delta leituras e gravações de transmissão de tabelas
Transformações próximas do tempo real
O Delta Lake se destaca por fornecer acesso quase em tempo real a grandes quantidades de dados para todos os usuários e aplicativos que consultam seu lakehouse. Devido à sobrecarga de gravação de arquivos e metadados no armazenamento de objetos na nuvem, a latência em tempo real real não pode ser alcançada para muitas cargas de trabalho que gravam nos sinks do Delta Lake.
Para aplicativos de transmissão de baixa latência, o site Databricks recomenda a escolha de sistemas de origem e de destino projetados para cargas de trabalho de tempo real, como o Kafka. O senhor pode usar o site Databricks para enriquecer dados, incluindo agregações, junção entre transmissões e junção de dados de transmissão com dados de dimensões que mudam lentamente (SCD) armazenados no site lakehouse.