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árioRecomendação
Transformações simples em DataFrames pequenosUse pandas diretamente
Processamento de milhões de registrosUse Spark Connect
Agregações complexas em grandes volumesUse Spark Connect
ETL com múltiplas fontes de dadosUse Spark Connect
Machine Learning em escalaUse 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 protobuf

Versão do PySpark

A versão do cliente PySpark deve corresponder à versão do servidor:

pip install pyspark==3.5.0

Conexã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