Published: June 18, 2020
por Matei Zaharia, Reynold Xin, Xiao Li, Wenchen Fan e Yin Huai
Temos o prazer de anunciar que o Apache SparkTM 3.0.0 já está disponível no Databricks como parte do nosso novo Databricks Runtime 7.0. A versão 3.0.0 inclui mais de 3.400 patches e é o resultado de enormes contribuições da comunidade de código aberto, trazendo grandes avanços nos recursos de Python e SQL e um foco na facilidade de uso tanto para exploração quanto para produção. Essas iniciativas refletem como o projeto evoluiu para atender a mais casos de uso e a públicos mais amplos, com este ano marcando seu 10º aniversário como um projeto de código aberto.
Aqui estão os principais novos recursos do Spark 3.0:
Não são necessárias grandes alterações de código para adotar esta versão do Apache Spark. Para mais informações, consulte o guia de migração.
Comemorando 10 anos de desenvolvimento e evolução do Spark
O Spark começou no AMPlab da UC Berkeley, um laboratório de pesquisa focado em computação intensiva de dados. Os pesquisadores do AMPlab estavam trabalhando com grandes empresas de escala de internet em seus problemas de dados e IA, mas perceberam que esses mesmos problemas também seriam enfrentados por todas as empresas com volumes de dados grandes e crescentes. A equipe desenvolveu um novo mecanismo para lidar com essas cargas de trabalho emergentes e, ao mesmo tempo, tornar as APIs para trabalhar com big data significativamente mais acessíveis para os desenvolvedores.
As contribuições da comunidade surgiram rapidamente para expandir o Spark para diferentes áreas, com novos recursos em torno de transmissão, Python e SQL, e esses padrões agora compõem alguns dos casos de uso dominantes do Spark. Esse investimento contínuo trouxe o Spark para onde ele está hoje, como o mecanismo de fato para cargas de trabalho de processamento de dados, ciência de dados, machine learning e análise de dados. O Apache Spark 3.0 dá continuidade a essa tendência, melhorando significativamente o suporte para SQL e Python — as duas linguagens mais usadas com o Spark hoje — bem como com otimizações de desempenho e operabilidade em todo o restante do Spark.
Melhorando o mecanismo Spark SQL
O Spark SQL é o mecanismo que sustenta a maioria das aplicações Spark. Por exemplo, no Databricks, descobrimos que mais de 90% das chamadas da API do Spark usam as APIs DataFrame, dataset e SQL, além de outras bibliotecas otimizadas pelo otimizador SQL. Isso significa que até mesmo os desenvolvedores de Python e Scala passam grande parte de seu trabalho pelo mecanismo Spark SQL. No lançamento do Spark 3.0, 46% de todos os patches contribuídos foram para o SQL, melhorando tanto o desempenho quanto a compatibilidade com o ANSI. Conforme ilustrado abaixo, o Spark 3.0 teve um desempenho aproximadamente 2x melhor que o Spark 2.4 no tempo total de Runtime. A seguir, explicamos quatro novos recursos no mecanismo Spark SQL.
O novo framework de Execução de query Adaptativa (AQE) melhora o desempenho e simplifica o ajuste, gerando um plano de execução melhor em Runtime, mesmo que o plano inicial não seja o ideal devido a estatísticas de dados ausentes/imprecisas e custos mal estimados. Devido à separação de armazenamento e computação no Spark, a chegada de dados pode ser imprevisível. Por todos esses motivos, a adaptabilidade em Runtime torna-se mais crítica para o Spark do que para os sistemas tradicionais. Este lançamento apresenta três otimizações adaptativas principais:
Com base em um benchmark TPC-DS de 3 TB, em comparação com a execução sem AQE, o Spark com AQE pode proporcionar acelerações de desempenho de mais de 1,5x para duas consultas e de mais de 1,1x para outras 37 consultas.
Dynamic Partition Pruning é aplicado quando o otimizador não consegue identificar em tempo de compilação as partições que pode ignorar. Isso não é incomum em esquemas estrela, que consistem em uma ou várias tabelas de fatos que fazem referência a qualquer número de tabelas de dimensão. Nessas operações de join, podemos podar as partições que o join lê de uma tabela de fatos, identificando as partições que resultam da filtragem das tabelas de dimensão. Em um benchmark TPC-DS, 60 de 102 queries mostram uma aceleração significativa entre 2x e 18x.
A compliance com ANSI SQL é fundamental para a migração de cargas de trabalho de outros mecanismos SQL para o Spark SQL. Para melhorar a compliance, esta versão muda para o calendário gregoriano proléptico e também permite que os usuários proíbam o uso das palavras-chave reservadas do ANSI SQL como identificadores. Além disso, introduzimos a verificação de overflow em Runtime em operações numéricas e a imposição de tipo em tempo de compilação ao inserir dados em uma tabela com um esquema predefinido. Essas novas validações melhoram a qualidade dos dados.
Dicas de join: embora continuemos a aprimorar o compilador, não há garantia de que ele sempre possa tomar a decisão ideal em todas as situações — a seleção do algoritmo de join é baseada em estatísticas e heurísticas. Quando o compilador não consegue fazer a melhor escolha, os usuários podem usar dicas de join para influenciar o otimizador a escolher um plano melhor. Esta versão estende as dicas de join existentes, adicionando novas dicas: SHUFFLE_MERGE, SHUFFLE_HASH e SHUFFLE_REPLICATE_NL.
Muitos desenvolvedores Python usam a API do pandas para estruturas de dados e análise de dados, mas ela é limitada ao processamento em um único nó. Também continuamos a desenvolver o Koalas, uma implementação da API do pandas no Apache Spark, para tornar os data scientists mais produtivos ao trabalhar com big data em ambientes distribuídos. O Koalas elimina a necessidade de criar muitas funções (por exemplo, suporte para plotagem) no PySpark para obter um desempenho eficiente em um cluster.
Após mais de um ano de desenvolvimento, a cobertura da API do Koalas para pandas é de quase 80%. Os downloads mensais do Koalas no PyPI cresceram rapidamente para 850.000, e o Koalas está evoluindo rapidamente com uma cadência de lançamento quinzenal. Embora o Koalas possa ser a maneira mais fácil de migrar do seu código pandas de nó único, muitos ainda usam as APIs do PySpark, que também estão crescendo em popularidade.
O Spark 3.0 traz várias melhorias para as APIs do PySpark:
Melhorar o suporte e a usabilidade do Python no Spark continua a ser uma das nossas maiores prioridades.
Hydrogen, transmissão e extensibilidade
Com o Spark 3.0, concluímos os principais componentes do Project Hydrogen, bem como introduzimos novos recursos para melhorar a transmissão e a extensibilidade.
Outras atualizações no Spark 3.0
O Spark 3.0 é um grande lançamento para a comunidade, com mais de 3.400 tickets do Jira resolvidos. É o resultado das contribuições de mais de 440 colaboradores, incluindo pessoas físicas e empresas como Databricks, Google, Microsoft, Intel, IBM, Alibaba, Facebook, Nvidia, Netflix, Adobe e muitas outras. Destacamos vários dos principais avanços em SQL, Python e transmissão no Spark nesta postagem do blog, mas há muitos outros recursos neste marco 3.0 que não foram abordados aqui. Saiba mais nas notas sobre a versão e descubra todas as outras melhorias no Spark, incluindo fontes de dados, ecossistema, monitoramento e muito mais.
Comece a usar o Spark 3.0 hoje
Se você quiser experimentar o Apache Spark 3.0 no Databricks Runtime 7.0, inscreva-se para uma account de trial grátis e comece a usar em minutos. Usar o Spark 3.0 é tão simples quanto selecionar a versão “7.0” ao iniciar um cluster.
Saiba mais sobre os detalhes do recurso e da versão:
Notícias
December 23, 2024/8 min de leitura
Anúncios
November 19, 2025/7 min de leitura


