Pipelines de produção com workflows

Transformação de Dados com Spark SQL no Databricks

Disha Mukherjee

Lead Data Engineer

Por que Delta Lake?

Um cofre digital brilhante e seguro com tabelas de dados organizadas e um escudo protetor, estilo moderno flat

 

$$

  • Transações ACID → desfaz gravações com falha
  • Imposição de schema → bloqueia tipos incompatíveis
  • Versionamento → consulta qualquer estado anterior
Transformação de Dados com Spark SQL no Databricks

Gravando em Delta

df_valid.write.format("delta") \
    .mode("overwrite") \
    .saveAsTable("transactions_clean")

print(f"Rows written: {df_valid.count():,}")
Rows written: 33,223

$$

$$

  • Uma nova tabela Delta aparece no Unity Catalog
Transformação de Dados com Spark SQL no Databricks

Tarefas no notebook

task1_ingest: carregar e limpar

  • Carrega CSV → aplica limpeza → grava uma tabela Delta
Transformação de Dados com Spark SQL no Databricks

Tarefas no notebook

task2_metrics: receita por categoria

  • Lê a tabela limpa → calcula métricas → grava em nova tabela
Transformação de Dados com Spark SQL no Databricks

Tarefas no notebook

task3_customers: ranquear por gasto

  • Lê a tabela limpa → ranqueia clientes → salva em nova tabela
Transformação de Dados com Spark SQL no Databricks

Criando o job

UI de Jobs e Pipelines mostrando DAG de job concluído com três tarefas e setas de dependência de task1_ingest para task2_metrics para task3_customers

  • Pode executar manualmente, agendar jobs e definir gatilhos
Transformação de Dados com Spark SQL no Databricks

Executando o job

DAG de execução do job com task1_ingest e task2_metrics bem-sucedidas em verde e task3_customers com falha em vermelho

Transformação de Dados com Spark SQL no Databricks

Executando o job

Verificando um erro na terceira tarefa

  • Erro: customer-id deve ser Customer_ID
Transformação de Dados com Spark SQL no Databricks

Executando o job

Visões de grafo com sucesso

Uma visão de linha do tempo

Transformação de Dados com Spark SQL no Databricks

O que é Lakeflow?

$$

$$

comparação: Imperativo (Jobs) | Declarativo (Lakeflow)

 

  • Jobs → você gerencia cada etapa
  • Lakeflow → declare o que as tabelas devem conter
  • O Databricks cuida da ordem, novas tentativas e computação
Transformação de Dados com Spark SQL no Databricks

O padrão @dlt.table

@dlt.table(name="transactions_bronze")
def transactions_bronze():
    return spark.read.format("csv").schema(schema).load(FILE_PATH)

@dlt.table(name="transactions_silver") def transactions_silver(): return dlt.read("transactions_bronze").na.drop(...).filter(...)
@dlt.table(name="category_revenue_gold") def category_revenue_gold(): return dlt.read("transactions_silver").groupBy("Category").agg(...)
Transformação de Dados com Spark SQL no Databricks

Execução do pipeline

DAG do pipeline Lakeflow mostrando transactions_bronze 100K linhas, depois transactions_silver 33K linhas e category_revenue_gold 6 linhas, todas materializadas em verde

  • Bronze (100K linhas) → Silver (33K linhas) → Gold (6 linhas)
Transformação de Dados com Spark SQL no Databricks

Notebooks, Jobs ou Lakeflow?

$$

camadas: Notebooks, Databricks Jobs, Lakeflow Pipelines

 

$$

  • Notebooks → exploração, protótipos
  • Databricks Jobs → pipelines multi-etapa, agendados
  • Lakeflow → totalmente gerenciado, declarativo
Transformação de Dados com Spark SQL no Databricks

Vamos praticar!

Transformação de Dados com Spark SQL no Databricks

Preparing Video For Download...