Plataforma unificada para analytics, data science e machine learning
Databricks é uma plataforma unificada de analytics que combina data warehouses e data lakes em uma arquitetura lakehouse. Fundada pelos criadores do Apache Spark, a plataforma oferece um ambiente colaborativo para data science, machine learning e analytics, executando na nuvem com otimizações proprietárias para performance e facilidade de uso.
Databricks foi fundada em 2013 pelos criadores originais do Apache Spark na UC Berkeley, incluindo Ali Ghodsi, Matei Zaharia, Ion Stoica, Patrick Wendell, Reynold Xin e Andy Konwinski. A empresa foi criada para comercializar e simplificar o uso do Spark, oferecendo uma plataforma gerenciada que elimina a complexidade de configuração e manutenção de clusters.
Databricks pioneirou o conceito de Lakehouse, que combina a flexibilidade e economia de data lakes com a performance e confiabilidade de data warehouses. A arquitetura utiliza Delta Lake como camada de armazenamento, fornecendo transações ACID, versionamento de dados e otimizações de performance sobre object storage.
Arquitetura unificada que combina data lakes e data warehouses com Delta Lake.
Engine de execução nativo otimizado para workloads SQL e streaming.
Notebooks colaborativos com suporte a múltiplas linguagens e visualizações.
Plataforma MLOps integrada para gerenciamento completo do ciclo de vida de ML.
Governança unificada de dados com controle de acesso e linhagem.
Disponível em AWS, Microsoft Azure e Google Cloud Platform.
Tipo | Plataforma SaaS |
Linguagens Suportadas | Python, Scala, SQL, R, Java |
Cloud Providers | AWS, Azure, Google Cloud |
Formatos de Dados | Delta Lake, Parquet, JSON, CSV, Avro |
Integrações | Kafka, Kinesis, EventHub, BigQuery, Snowflake |
Modelo de Pricing | DBU (Databricks Units) + Cloud compute |
Construção de pipelines ETL/ELT escaláveis com Delta Live Tables para processamento de dados em tempo real e batch.
Ambiente colaborativo para exploração de dados, feature engineering e desenvolvimento de modelos de machine learning.
Plataforma MLOps completa com AutoML, experiment tracking, model registry e deployment automatizado.
Analytics self-service com Databricks SQL para consultas ad-hoc e dashboards interativos.
Processamento de streaming com Structured Streaming para analytics em tempo real e alertas.
# Instalação do Databricks CLI
pip install databricks-cli
# Configuração de autenticação
databricks configure --token
# Configuração do workspace
databricks workspace ls /
# Upload de notebook
databricks workspace import notebook.py /Users/user@company.com/notebook
# Databricks notebook cell
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, current_timestamp, when
from delta.tables import DeltaTable
# Spark session já configurado no Databricks
spark = spark
# Ler dados de origem
raw_data = spark.read.format("json") \
.option("multiline", "true") \
.load("/mnt/raw-data/events/")
# Transformações
cleaned_data = raw_data \
.filter(col("event_type").isNotNull()) \
.withColumn("processed_at", current_timestamp()) \
.withColumn("is_valid", when(col("user_id").isNotNull(), True).otherwise(False))
# Escrever para Delta Lake
cleaned_data.write \
.format("delta") \
.mode("overwrite") \
.option("mergeSchema", "true") \
.save("/mnt/delta/events_cleaned")
# Criar tabela Delta
spark.sql("""
CREATE TABLE IF NOT EXISTS events_cleaned
USING DELTA
LOCATION '/mnt/delta/events_cleaned'
""")
print(f"Processados {cleaned_data.count()} registros")
-- Databricks SQL cell
-- Análise de eventos por dia
SELECT
DATE(processed_at) as date,
event_type,
COUNT(*) as event_count,
COUNT(DISTINCT user_id) as unique_users
FROM events_cleaned
WHERE processed_at >= current_date() - INTERVAL 30 DAYS
GROUP BY DATE(processed_at), event_type
ORDER BY date DESC, event_count DESC;
-- Criar view materializada
CREATE OR REPLACE VIEW daily_events_summary AS
SELECT
DATE(processed_at) as date,
event_type,
COUNT(*) as total_events,
COUNT(DISTINCT user_id) as unique_users,
AVG(CASE WHEN is_valid THEN 1.0 ELSE 0.0 END) as validity_rate
FROM events_cleaned
GROUP BY DATE(processed_at), event_type;
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
# Configurar MLflow
mlflow.set_experiment("/Users/user@company.com/fraud_detection")
# Carregar dados
df = spark.table("events_cleaned").toPandas()
X = df[['feature1', 'feature2', 'feature3']]
y = df['is_fraud']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Iniciar run do MLflow
with mlflow.start_run():
# Parâmetros do modelo
n_estimators = 100
max_depth = 10
# Log de parâmetros
mlflow.log_param("n_estimators", n_estimators)
mlflow.log_param("max_depth", max_depth)
# Treinar modelo
model = RandomForestClassifier(
n_estimators=n_estimators,
max_depth=max_depth,
random_state=42
)
model.fit(X_train, y_train)
# Predições e métricas
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
# Log de métricas
mlflow.log_metric("accuracy", accuracy)
# Log do modelo
mlflow.sklearn.log_model(model, "fraud_detection_model")
print(f"Accuracy: {accuracy:.4f}")
print(f"Run ID: {mlflow.active_run().info.run_id}")
import dlt
from pyspark.sql.functions import col, current_timestamp
# Bronze layer - dados brutos
@dlt.table(
comment="Raw events data from source systems"
)
def bronze_events():
return spark.readStream.format("cloudFiles") \
.option("cloudFiles.format", "json") \
.load("/mnt/raw-data/events/")
# Silver layer - dados limpos
@dlt.table(
comment="Cleaned and validated events"
)
@dlt.expect_or_drop("valid_event", "event_type IS NOT NULL")
@dlt.expect_or_drop("valid_user", "user_id IS NOT NULL")
def silver_events():
return dlt.read_stream("bronze_events") \
.select(
col("event_id"),
col("user_id"),
col("event_type"),
col("timestamp").cast("timestamp"),
current_timestamp().alias("processed_at")
)
# Gold layer - dados agregados
@dlt.table(
comment="Daily event aggregations"
)
def gold_daily_events():
return dlt.read("silver_events") \
.groupBy(
col("event_type"),
date_format(col("timestamp"), "yyyy-MM-dd").alias("date")
) \
.agg(
count("*").alias("event_count"),
countDistinct("user_id").alias("unique_users")
)
Plataforma | Facilidade de Uso | Performance | Custo | Flexibilidade |
---|---|---|---|---|
Databricks | Excelente | Excelente | Alto | Alta |
Snowflake | Excelente | Excelente | Alto | Média |
Apache Spark (Open Source) | Média | Boa | Baixo | Alta |
Google Dataflow | Boa | Excelente | Médio | Média |
Amazon EMR | Média | Boa | Médio | Alta |
Escolha Databricks se: Você precisa de machine learning avançado, processamento de dados não estruturados, ou workloads de data science colaborativo.
Escolha Snowflake se: Seu foco principal é analytics SQL, data warehousing tradicional, ou você precisa de separação completa entre compute e storage.
Escolha Databricks se: Você quer facilidade de uso, otimizações de performance, colaboração em equipe, e suporte empresarial.
Escolha Spark Open Source se: Você tem expertise técnica interna, quer controle total da infraestrutura, ou tem restrições orçamentárias.
Escolha Databricks se: Você quer uma experiência consistente multi-cloud e recursos avançados de MLOps.
Escolha soluções cloud-native se: Você está totalmente comprometido com um provedor de nuvem específico e quer integração nativa.