Ir para o conteúdo principal
Anúncios

Apresentando o Apache Spark 4.2

Já disponível no Databricks Runtime 19 Beta

por Wenchen Fan, Andreas Neumann, Serge Rielau, Szehon Ho, Gengliang Wang, Linhong Liu, Hyukjin Kwon, Jerry Peng, DB Tsai, Xiao Li e Reynold Xin

  • Defina um contexto confiável para analytics e AI: as visualizações de métricas criam definições de negócios governadas, enquanto a recuperação de vetores, tipos geoespaciais e primitivas SQL mais ricas trazem análises nativas de AI para o Spark.
  • Acesse o Spark a partir de mais aplicativos: Spark Connect, execução Python baseada em Arrow, compatibilidade aprimorada do PySpark e Python Data Sources tornam o Spark mais fácil de usar a partir de serviços, ferramentas e agentes de AI.
  • Mantenha os dados atualizados e prontos para produção: Auto CDC, Data Source V2, consultas CHANGES, Real-Time Mode e melhorias na plataforma simplificam o processamento confiável de dados em constante mudança.

Introdução

O Apache Spark 4.2 traz mais elementos do moderno stack de dados e AI diretamente para o mecanismo. Com base no Spark 4.x, a versão adiciona métricas governadas, primitivas de vetor e top-K, um caminho Python mais focado em Arrow, captura de dados de alteração (CDC) de primeira classe e bases operacionais e de streaming mais robustas.

Isso torna o Spark mais útil em ambos os lados de uma aplicação de AI. Ele melhora a qualidade e a atualização dos dados fornecidos aos agentes de AI, além de facilitar a chamada do Spark por aplicações e agentes como um serviço de execução remota. A proposta de AI é concreta: semântica confiável, primitivas de recuperação nativas, dados de alteração atualizados e interfaces abertas para computação em escala Spark.

O Spark 4.2 pode ser compreendido por meio de quatro benefícios:

  • Defina a verdade uma única vez: As visualizações de métricas colocam métricas de negócios governadas no Spark para que SQL, ferramentas de BI, aplicações e sistemas de AI possam usar as mesmas definições.
  • Acesse o Spark de qualquer lugar: As melhorias no Spark Connect, PySpark, Arrow e Python Data Source facilitam a chamada do Spark a partir de serviços e ecossistemas Python.
  • Execute análises nativas de AI em SQL: Funções de vetor, NEAREST BY, sketches, ranking e tipos geoespaciais trazem mais blocos de construção analíticos diretamente para o Spark SQL.
  • Mova dados em constante mudança com segurança: O Auto CDC, a superfície CHANGES, o Data Source V2 e o Real-Time Streaming facilitam o processamento correto de dados que mudam continuamente.

Juntas, essas mudanças ajudam as organizações a usar um único mecanismo aberto para preparar dados, definir o significado de negócios, recuperar o contexto relevante e manter as aplicações analíticas e de AI atualizadas.

Métricas e modelagem semântica: defina a verdade uma única vez

O Spark 4.2 introduz visualizações de métricas, trazendo uma camada semântica nativa para o Spark SQL. As equipes podem definir métricas de negócios uma única vez e usá-las de forma consistente em painéis, relatórios, aplicações e ferramentas de AI.

Isso é importante porque muitas métricas cruciais não são aditivas de forma segura. Proporções, contagens distintas, retenção e medidas semelhantes podem produzir resultados incorretos quando cada consumidor reescreve a fórmula em uma granularidade diferente. As visualizações de métricas tornam dimensões e medidas objetos de primeira classe que o Spark compreende, permitindo que o mecanismo preserve a semântica de agregação pretendida.

Depois que uma visualização de métrica é definida, os usuários podem consultar as mesmas medidas governadas por diferentes dimensões:

Para aplicações de AI, isso é especialmente importante. Um agente não deve calcular a receita de forma diferente de um painel ou retornar uma resposta diferente quando um usuário altera o agrupamento solicitado. Uma visualização de métrica governada oferece ao SQL, BI e AI uma única fonte da verdade, com análise do Spark, resolução de catálogo e permissões aplicadas de forma consistente.

Spark Connect e PySpark: acesse o Spark de qualquer lugar

Spark como uma API de serviço

O Spark Connect separa o cliente do servidor Spark por meio de um protocolo baseado em gRPC e Arrow. Um cliente cria um plano lógico, o servidor o analisa e executa, e os resultados retornam como lotes do Arrow. O cliente não precisa de um runtime completo do Spark ou de uma JVM colocalizada.

Isso facilita a incorporação do Spark em notebooks, serviços, ferramentas de desenvolvedor e aplicações de AI. Um agente ou aplicação pode chamar o Spark a partir de seu próprio runtime, enquanto o Spark mantém a análise, otimização, execução e governança no servidor.

O Spark 4.2 continua reduzindo a lacuna de compatibilidade com o Spark Classic. As melhorias incluem melhor compatibilidade com a API RDD, entradas de DataFrame para spark.read.* e SparkSession.emptyDataFrame, depuração aprimorada, propagação de erros, relatórios de status e suporte ao modo de cluster YARN. Juntas, essas alterações tornam o PySpark e o Spark Connect mais rápidos, mais compatíveis e mais fáceis de operar em escala e remotamente.

Um caminho Python mais focado em Arrow

O Python continua sendo uma das principais maneiras pelas quais os usuários criam cargas de trabalho de dados e AI com o Spark. No Spark 4.2, a execução de UDFs Python otimizadas para Arrow é habilitada por padrão, para que as UDFs existentes possam usar o caminho colunar mais rápido sem a necessidade de reescrever o código. O suporte ao Pandas 3 também facilita a atualização de ambientes Python juntamente com o Spark.

Para códigos que precisam de mais controle, as UDFs do Arrow mantêm os dados em matrizes PyArrow e evitam uma conversão desnecessária do Pandas. O Spark também expande a criação de perfil (profiling) e a depuração para a execução do Python, incluindo perfil de tempo e memória para Python Data Sources, diagnósticos aprimorados de workers e logs que podem ser consultados como dados.

O Spark 4.2 também melhora a interoperabilidade por meio da Arrow C Data Interface e do protocolo PyCapsule. Quando ambos os lados oferecem suporte, os DataFrames do Spark podem ser movidos para ferramentas nativas do Arrow, como Polars ou DuckDB, sem copiar ou serializar os dados subjacentes. Isso reduz a necessidade de código de integração entre o processamento em escala Spark e o ecossistema mais amplo de Python e AI.

As Python Data Sources reduzem ainda mais o atrito de integração. As equipes podem criar leitores e gravadores em lote ou streaming em Python, registrá-los uma única vez e usá-los por meio da interface padrão de fonte de dados do Spark. Na versão 4.2, a criação de perfil facilita o ajuste e a operação desses conectores, em vez de tratá-los como caixas pretas.

Spark SQL: análises nativas de AI no mecanismo

Pontuação de vetores e recuperação top-K

O Spark 4.2 adiciona novas primitivas SQL para busca por semelhança de vetores, classificação (ranking) e análise de séries temporais. A versão apresenta funções de distância e semelhança de vetores, normalização de vetores, agregação de vetores e NEAREST BY, uma junção de classificação top-K para correspondência baseada em distância. Essas primitivas permitem recuperação, recomendações, resolução de entidades e geração de candidatos em escala.

Análises geoespaciais nativas

Os tipos integrados GEOMETRY e GEOGRAPHY e as funções ST_* permitem análises com reconhecimento de localização sem extensões espaciais externas. O Spark 4.2 também adiciona suporte a Parquet, WKT/WKB, preservação de SRID e conversão para Python.

Funções integradas e visualizações temporárias totalmente qualificadas

Com o Spark 4.2, você pode invocar de forma inequívoca funções fornecidas pelo Spark qualificando-as com SYSTEM.BUILTIN. Seguindo o precedente das variáveis de sessão, você também pode qualificar totalmente as visualizações temporárias com SYSTEM.SESSION. Isso é útil para evitar ambiguidades com funções definidas pelo usuário ou relações persistidas e evitar injeções.

Caminho de pesquisa SQL

O Spark 4.2 adiciona suporte ao caminho de pesquisa SQL com SET PATH, facilitando a resolução de tabelas, funções e variáveis entre namespaces, e para bibliotecas de objetos simplesmente adicionando esquemas ao caminho.

O Spark persiste o caminho SQL em visualizações e funções SQL para uma resolução de nomes previsível.

A partir do Spark 4.2, os scripts SQL podem usar DECLARE, OPEN, FETCH e CLOSE em cursores. Isso permite maior controle sobre o processamento linha por linha de conjuntos de resultados, o que no passado exigia sair do SQL para usar DataFrames.

O Spark SQL também adiciona Tuple sketches, time_bucket para análise de séries temporais, suporte mais amplo ao tipo TIME em vários formatos de arquivo, QUALIFY para filtrar resultados de janelas (window), Top-K max_by e min_by, além de suporte a IGNORE NULLS e RESPECT NULLS para funções de agregação comuns.

Juntas, essas adições tornam o Spark SQL mais expressivo para aplicações analíticas modernas.

Spark Declarative Pipelines e Auto CDC: mova dados em constante mudança com segurança

O Spark 4.2 introduz o suporte ao Auto CDC no Spark Declarative Pipelines (SDP), trazendo o processamento de SCD (Slow Changing Dimensions) Tipo 1 de primeira classe para o Spark. Antes do Auto CDC, consumir um feed de alterações e aplicá-lo a uma tabela de destino exigia uma lógica de mesclagem (merge) escrita manualmente que poderia facilmente se tornar complexa e propensa a erros, devido ao tratamento de exclusões e eventos de alteração fora de ordem. Com o Auto CDC, os usuários podem simplesmente configurar como os eventos de CDC devem atualizar uma tabela de destino e deixar o Spark gerenciar as complexidades.

O Auto CDC fornece uma API Python para aplicar alterações de CDC a uma tabela de destino SCD Tipo 1. Ele foi projetado para cargas de trabalho comuns de ingestão e replicação em que a versão mais recente de cada registro deve ser mantida de forma confiável, como perfis de clientes, catálogos de produtos, registros de contas e dados de referência operacional.

Por exemplo, um fluxo do Auto CDC agora pode ser expresso de forma declarativa:

Além do Auto CDC, o Spark Declarative Pipelines também recebe um importante fortalecimento da plataforma, incluindo um tratamento mais seguro no lado do servidor para análise eager e identificadores estruturados para fluxos. Juntas, essas mudanças tornam o desenvolvimento de pipelines declarativos mais confiável e dão ao Spark uma base para padrões de engenharia de dados de nível mais alto.

Real-Time Mode no Structured Streaming: dados operacionais mais recentes

O Real-Time Mode (RTM) no Structured Streaming permite que consultas de streaming processem dados com latência de milissegundos de ponta a ponta. Isso ajudou o Spark a desbloquear classes totalmente novas de casos de uso e está se tornando a base para aplicações de dados operacionais, como detecção de fraudes, personalização, observabilidade e engenharia de recursos em tempo real.

No Spark 4.2, estendemos o RTM para o PySpark: agora você pode executar consultas de streaming sem estado (sem UDFs do Python) no Real-Time Mode. O Python é uma escolha popular entre cientistas e engenheiros de dados por sua facilidade de uso, e isso traz o processamento de baixa latência do RTM para um público muito mais amplo.

Olhando para a próxima versão do Spark 4.x, estamos trazendo suporte com estado (stateful) para o RTM — e o trabalho já está em andamento. O esforço é acompanhado em SPARK-54699 com três componentes principais:

  • Um novo shuffle de streaming (SPARK-56664) que encaminha dados de estágios upstream para downstream assim que estiverem prontos, em vez de esperar que um estágio seja concluído
  • Agendamento de estágios simultâneos (SPARK-57000), permitindo que vários estágios sejam executados ao mesmo tempo
  • Suporte a operadores com estado (SPARK-57228), começando com transformWithState

Além do suporte com estado, também estamos trabalhando para habilitar UDFs do Python (SPARK-57237) no RTM.

Fique atento — e agradecemos seus comentários e contribuições!

Data Source V2: uma única interface para fontes de dados em evolução

O Spark 4.2 marca outro grande passo à frente para o Data Source V2. O DSv2 está se tornando a base padrão para conectores que expõem leituras, gravações, operações em nível de linha, evolução de esquema, dados de alteração (change data), métricas de operação e transações por meio do Spark.

CDC no DSv2

O Spark 4.2 adiciona suporte de primeira classe para captura de dados de alteração (CDC) ao DSv2. Os conectores podem expor fluxos de alteração por meio de uma API padrão, e os usuários podem consultá-los com a nova cláusula SQL CHANGES, APIs de DataFrame e vinculações do PySpark. O Spark também lida com o pós-processamento comum no mecanismo — descartando remanescentes de copy-on-write, detectando atualizações e computando alterações líquidas por linha. A mesma consulta se comporta de maneira consistente em qualquer conector DSv2 que suporte CDC.

Operações em nível de linha, evolução de esquema e transações

O Spark 4.2 aprimora ainda mais o suporte para operações DML em nível de linha nos conectores Data Source V2 (DSv2). O MERGE INTO recebe melhorias adicionais de desempenho, incluindo geração de código em todo o estágio (whole-stage code generation), além de novos aprimoramentos nos recursos de evolução de esquema introduzidos no Spark 4.1.

A evolução de esquema agora também é suportada para operações INSERT INTO, tanto para resolução de colunas baseada em nome quanto baseada em posição, reduzindo o atrito ao gravar em tabelas em evolução. Além disso, os resumos de operação agora estão disponíveis para UPDATE e DELETE, complementando os resumos de MERGE INTO adicionados no Spark 4.1. As métricas de MERGE INTO também foram expandidas e refinadas.

O Spark 4.2 introduz blocos de construção adicionais para conectores DSv2 de nível de produção e formatos de tabela de lakehouse. As principais adições incluem as bases de uma API de transação, filtragem aprimorada de estatísticas de partição, melhorias em junções particionadas por armazenamento (storage-partitioned joins) e um alinhamento mais próximo entre os comandos e comportamentos do DSv1 e do DSv2. Juntos, esses aprimoramentos tornam o DSv2 uma plataforma mais completa para implementar conectores de lakehouse, formatos de tabela transacionais e outros sistemas de dados em grande escala.

Melhorias notáveis e agradecimentos

O Spark 4.2 inclui várias melhorias na plataforma que tornam o Spark mais fácil de operar, depurar, proteger e dimensionar. A Web UI do Spark recebe uma grande modernização com Bootstrap 5, modo escuro, melhor visualização do plano SQL, melhorias na linha do tempo de consulta e paginação no lado do servidor. O suporte ao Kubernetes melhora com o gerenciamento heterogêneo de executores, APIs estáveis de gerenciador de recursos e redução de sobrecarga do painel de controle (control-plane). O Spark 4.2 também adiciona suporte ao JDK 25, melhora a segurança na web, dimensiona o Spark History Server e atualiza dependências importantes, incluindo Scala, Parquet, ORC, Arrow, Netty e Hadoop.

O Spark 4.2 reflete a força da comunidade Apache Spark, com mais de 1.900 commits de mais de 260 colaboradores. Agradecemos a todos que contribuíram com código, revisões, testes, documentação e feedback para tornar este lançamento possível.

image2.png

Comece a usar o Spark 4.2

Baixe o Apache Spark 4.2 em spark.apache.org/downloads e veja as notas de lançamento completas do Apache Spark 4.2 para obter a lista completa de alterações. O Apache Spark 4.2 também estará disponível no Databricks Runtime 19 Beta.

image1.png

(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original

Receba os posts mais recentes na sua caixa de entrada

Assine nosso blog e receba os posts mais recentes diretamente na sua caixa de entrada.