(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
Databricks
Databricks 2 min

Delta Lake no Databricks: transacções ACID para dados em escala

João Barros 08 de August de 2024 2 min de leitura

O Delta Lake é uma camada de armazenamento open-source que adiciona fiabilidade transaccional aos ficheiros Parquet no Data Lake. No Databricks, é o formato padrão para todas as tabelas, trazendo garantias ACID que o Parquet simples não oferece.

O que traz o Delta Lake

  • ACID Transactions — operações atómicas garantem que o estado da tabela é sempre consistente, mesmo com falhas a meio.
  • Schema Enforcement — rejeita escrita de dados com schema incompatível, evitando corrupção silenciosa.
  • Time Travel — acesso a versões anteriores da tabela por timestamp ou número de versão.
  • Upserts com MERGE — operações de insert/update/delete atómicas numa única instrução.

Criar e escrever uma tabela Delta

# PySpark
df.write.format("delta").mode("overwrite").save("/mnt/datalake/silver/vendas")

# Ou via SQL
CREATE TABLE vendas USING DELTA LOCATION '/mnt/datalake/silver/vendas'

Time Travel

# Por número de versão
df_v3 = spark.read.format("delta").option("versionAsOf", 3).load("/mnt/datalake/silver/vendas")

# Por timestamp
df_jan = spark.read.format("delta").option("timestampAsOf", "2024-01-01").load("/mnt/datalake/silver/vendas")

MERGE (Upsert)

from delta.tables import DeltaTable

delta_tbl = DeltaTable.forPath(spark, "/mnt/datalake/silver/vendas")
delta_tbl.alias("tgt").merge(
    df_novos.alias("src"),
    "tgt.id_venda = src.id_venda"
).whenMatchedUpdateAll().whenNotMatchedInsertAll().execute()

Optimizar e fazer vacuum

OPTIMIZE vendas ZORDER BY (data_venda, id_cliente)
VACUUM vendas RETAIN 168 HOURS  -- manter 7 dias de histórico

Conclusão

O Delta Lake é o alicerce de qualquer Data Lakehouse moderno. No Databricks, está integrado de forma nativa e activo por defeito — tire partido do MERGE para ingestão incremental e do Time Travel para auditorias e recuperação de erros.

Partilhar: