- Data Hackers Newsletter
- Posts
- Delta Lake: O que é e como usar no Databricks
Delta Lake: O que é e como usar no Databricks
Descubra os benefícios do Delta Lake, conheça sua arquitetura e veja como integrá-lo em projetos de big data usando o Databricks
O Delta Lake é uma inovação essencial para quem trabalha com big data na plataforma Databricks. Ele fornece uma camada de armazenamento robusta que combina a flexibilidade dos data lakes com a confiabilidade dos data warehouses, permitindo transações ACID e consultas eficientes. Neste post, você vai explorar as principais funcionalidades do Delta Lake, sua arquitetura e os benefícios que traz para o gerenciamento e análise de grandes volumes de dados, além de um guia prático sobre como integrá-lo em seus projetos.
O que é o Delta Lake e quais suas funcionalidades?
O Delta Lake é uma camada de armazenamento otimizada que serve como base para tabelas em um lakehouse na plataforma Databricks. Trata-se de um software de código aberto que estende arquivos de dados Parquet com um log de transações, garantindo transações ACID e manipulação de metadados escalável. O Delta Lake é totalmente compatível com as APIs do Apache Spark, permitindo uma única cópia de dados para operações de lotes e de transmissão, além de proporcionar processamento incremental em escala.
Funcionalidades Principais
Entre suas funcionalidades, destacam-se:
Formatação padrão: O Delta Lake é o formato padrão para todas as operações no Databricks, garantindo que todas as tabelas criadas sejam, por padrão, tabelas Delta.
Transações ACID: Assegura a consistência e integridade dos dados através de transações atômicas.
Gerenciamento de tabelas: Permite atualizações e modificações de tabelas, com suporte a operações de merge (upsert), substituições seletivas e atualizações de esquema sem a necessidade de reescrever dados.
Consultas históricas: Cada gravação em uma tabela Delta cria uma nova versão, permitindo consultar versões anteriores das tabelas e analisar as modificações feitas.
Otimizações e configurações: O Delta Lake oferece várias opções para otimização de desempenho, gerenciamento de arquivos e indexação de dados, além de permitir uma configuração detalhada de parâmetros nas tabelas.
Integração com Delta Live Tables: Otimizado para suportar cargas de trabalho de transmissão estruturada, facilitando a implementação e gerenciamento de pipelines de dados.
Essas funcionalidades tornam o Delta Lake uma solução robusta para o gerenciamento e processamento de dados em larga escala na nuvem.

O Delta Lake simplifica a manipulação dos dados, permitindo fazer análises robustas e em tempo real
Quais os principais benefícios do Delta Lake?
O Delta Lake traz vantagens significativas para quem trabalha com grandes volumes de dados. Aqui estão os principais benefícios que ele oferece:
Prevenção da corrupção de dados: Mantém um log de transações ao lado dos dados, assegurando leitura e escrita consistentes com as propriedades ACID, protegendo contra a corrupção de dados durante falhas de processos ETL (Extract, Transform, Load).
Consultas mais rápidas: Utiliza um log de transações que centraliza estatísticas e informações sobre os arquivos Parquet, permitindo otimizações na leitura e reduzindo tempos de resposta.
Aumento da frescura dos dados: Com a funcionalidade de ingestão em lote e em tempo real, é possível atualizar os dados frequentemente, garantindo que as informações estejam sempre atualizadas.
**Reprodução de modelos de machine learning: O recurso de Time Travel permite consultar dados em um estado específico, essencial para a reprodução de resultados em modelos de machine learning.
Conformidade com regulamentações: Oferece operações de DELETE e UPDATE, facilitando a conformidade com leis como o GDPR e CCPA, que exigem a capacidade de excluir dados a pedido dos clientes.
Esses benefícios fazem do Delta Lake uma escolha atraente para empresas que buscam melhorar a qualidade, a eficiência e a conformidade de seus dados.
Como usar o Delta Lake no Databricks?
Para usar o Delta Lake no Databricks, você pode seguir etapas que abrangem desde a criação de tabelas até operações de leitura, escrita, atualização e limpeza. Veja os passos principais:
1. Preparar os dados de origem
Utilize um conjunto de dados, como o "People 10 M", que pode ser baixado do Kaggle e carregado no seu workspace do Azure Databricks.
2. Criar uma tabela
Crie tabelas Delta no Databricks com o seguinte código em Python:
from pyspark.sql.types import StructType, StructField, IntegerType, StringType, TimestampType
schema = StructType([
StructField("id", IntegerType(), True),
StructField("firstName", StringType(), True),
StructField("middleName", StringType(), True),
StructField("lastName", StringType(), True),
StructField("gender", StringType(), True),
StructField("birthDate", TimestampType(), True),
StructField("ssn", StringType(), True),
StructField("salary", IntegerType(), True)
])
df = spark.read.format("csv").option("header", True).schema(schema).load("/Volumes/main/default/my-volume/export.csv")
df.writeTo("main.default.people_10m").createOrReplace()
3. Ler uma tabela
Para acessar dados em tabelas Delta:
people_df = spark.read.table("main.default.people_10m")
display(people_df)
4. Gravar em uma tabela
Adicione dados a uma tabela Delta usando o modo de acréscimo:
df.write.mode("append").saveAsTable("main.default.people_10m")
5. Atualizar uma tabela
Atualize dados com um critério específico:
deltaTable.update(condition="gender = 'F'", set={"gender": "'Female'"})
6. Excluir dados de uma tabela
Remova dados que atendem a um certo critério:
deltaTable.delete("birthDate < '1955-01-01'")
7. Otimizar a tabela
Melhore o desempenho em consultas utilizando:
deltaTable.optimize().executeCompaction()
8. Consultar uma versão anterior da tabela
Para consultar instantâneos mais antigos:
SELECT * FROM main.default.people_10m VERSION AS OF 0
9. Limpar arquivos antigos
Remova arquivos de dados não utilizados com:
deltaTable.vacuum()
Esses passos demonstram como criar, gerenciar e otimizar tabelas Delta no Databricks, facilitando a manipulação e análise de grandes volumes de dados.
Qual a arquitetura do Delta Lake?
A arquitetura do Delta Lake é fundamentada em uma camada de armazenamento open-source que visa fornecer confiabilidade e a capacidade de realizar transações ACID. Isso permite uma gestão eficiente de dados em ambientes de big data, combinando cargas de trabalho de streaming e batch.
Camadas de Tabelas
A estrutura é composta por três principais camadas de tabelas:
Camada Bronze: Armazena dados brutos ingeridos de múltiplas fontes, como sistemas de IoT e bancos de dados relacionais. Captura a realidade dos dados.
Camada Silver: Após o processamento, os dados na camada Bronze são refinados, oferecendo uma visão mais estruturada e confiável, ideal para análises e engenharia de features.
Camada Gold: Aqui, os dados são altamente refinados e prontos para uso em análises profundas ou modelos de machine learning. Passam por rigorosos processos de purificação e validação.
Log de Transações e Gestão de Arquivos
O Delta Lake utiliza um log de transações que armazena metadados sobre operações, assegurando que todas sejam realizadas de forma segura e eficiente. Além disso, proporciona maior segurança nas operações de manipulação de dados e permite melhor gestão de arquivos, como a compactação de pequenos arquivos comuns em ambientes de big data.
A arquitetura do Delta Lake combina a robustez de um data warehouse e a flexibilidade de um data lake, criando um ambiente mais simplificado e eficiente para o gerenciamento de dados.
Como integrar o Delta Lake em projetos de big data?
Integrar o Delta Lake em projetos de big data envolve opções que facilitam a leitura e escrita entre Delta Lake e outras plataformas. Abaixo estão as principais opções de integração:
Acesso direto ao armazenamento em nuvem: Permite acessar arquivos diretamente no armazenamento em nuvem usando tabelas externas, simples, mas sem um catálogo ou capacidades de governança.
Metastore Hive externo (sincronização bidirecional): Sincroniza metadados entre o Unity Catalog da Databricks e um Hive Metastore externo, facilitando o acesso para leitores compatíveis, mas requer configuração inicial.
Delta Sharing: Oferece acesso a tabelas Delta por meio de um servidor de compartilhamento Delta. Ideal para cenários de uso em tempo real e com boas capacidades de auditoria, mas oferece apenas acesso somente leitura.
Conector JDBC/ODBC: Permite que aplicações de backend se conectem ao warehouse SQL da Databricks, fácil de configurar e suporta operações de leitura e escrita.
Cada opção atende a diferentes necessidades e casos de uso. Portanto, a escolha da abordagem mais adequada dependerá dos requisitos específicos do projeto.
Vale a pena usar o Delta Lake no Databricks?
O Delta Lake se estabelece como uma solução poderosa para o gerenciamento de dados em ambientes de big data, integrando a confiança de um data warehouse com a flexibilidade de um data lake. Neste post, mergulhamos nas suas funcionalidades, benefícios e até discutimos como integrá-lo em projetos práticos, tornando evidente que essa tecnologia é essencial para otimizar processos de ETL e facilitar a análise de grandes volumes de dados.
Portanto, se você busca aprimorar a qualidade, a eficiência e a conformidade de seus projetos de dados, considerar o uso do Delta Lake no Databricks pode ser um passo estratégico para elevar sua prática na manipulação e análise de informações.