Spark Connect
Overview
O Spark Connect é um serviço de processamento distribuído disponível na plataforma Dadosfera que permite executar código PySpark remotamente. Com ele, você pode processar grandes volumes de dados de forma eficiente diretamente dos seus Notebooks ou Data Apps.
Benefícios
- Processamento Distribuído: Execute operações em paralelo em múltiplos workers
- Sem Configuração: Cluster sempre disponível, sem necessidade de provisionar recursos
- Integração Nativa: Funciona diretamente com Notebooks e Data Apps da plataforma
- Compatível com Snowflake: Processe dados do seu data warehouse de forma eficiente
Quando Usar
| Cenário | Recomendação |
|---|---|
| Transformações simples em DataFrames pequenos | Use pandas diretamente |
| Processamento de milhões de registros | Use Spark Connect |
| Agregações complexas em grandes volumes | Use Spark Connect |
| ETL com múltiplas fontes de dados | Use Spark Connect |
| Machine Learning em escala | Use Spark Connect |
Pré-requisitos
Instalação de Dependências
Antes de conectar ao Spark, instale as dependências necessárias:
pip install pyspark==3.5.0 pandas "pyarrow>4" "numpy<2" grpcio grpcio-status protobufVersão do PySpark
A versão do cliente PySpark deve corresponder à versão do servidor:
pip install pyspark==3.5.0Conexão Básica
Conectando ao Cluster
from pyspark.sql import SparkSession
# Conectar ao Spark Connect
spark = SparkSession.builder \
.remote("sc://spark-connect.spark-jobs.svc.cluster.local:15002") \
.getOrCreate()
print(f"Conectado! Versão do Spark: {spark.version}")Encerrando a Sessão
Sempre encerre sua sessão quando terminar:
spark.stop()Padrão Recomendado (Context Manager)
from contextlib import contextmanager
from pyspark.sql import SparkSession
@contextmanager
def spark_session():
spark = SparkSession.builder \
.remote("sc://spark-connect.spark-jobs.svc.cluster.local:15002") \
.getOrCreate()
try:
yield spark
finally:
spark.stop()
# Uso
with spark_session() as spark:
df = spark.range(100)
df.show()Limitações
O Spark Connect possui algumas limitações em relação ao Spark tradicional:
- Sem API RDD: Apenas DataFrame/Dataset API é suportada
- Sem SparkContext: Use operações de DataFrame
- UDFs: Devem ser auto-contidas (sem dependências externas)
- Configurações: Alterações a nível de configuração, tais como: configurações do cluster, pacotes, não podem ser feitas via Spark Application porque existe um isolamento entre client e servidor.
Próximos Passos
Updated 2 days ago
