Publicado: Jul 11, 2022

O tempo de execução do Amazon EMR para Apache Spark é um ambiente de tempo de execução de performance otimizada para o Apache Spark, disponível e ativado por padrão nos clusters do Amazon EMR versão 5.28 ou superior. O tempo de execução do Amazon EMR para Spark é até três vezes mais rápido e a API é 100% compatível com o Spark de código aberto.

Temos o prazer de anunciar hoje o caching de fragmentos de resultados, um novo recurso disponível no tempo de execução do Amazon EMR para Apache Spark que ajuda a acelerar as consultas direcionadas a subconjuntos de dados estáticos. Nos nossos testes internos baseados na referência TPC-H, o uso de caching de fragmentos de resultados por consultas que utilizam funções de janela contínua e incremental aumenta consistentemente a performance em até 15,6 vezes.

Muitas vezes, os clientes têm dados no Amazon S3 que não mudam com o tempo. No entanto, as consultas repetidas nesses conjuntos de dados precisam recalcular os resultados a cada execução. Por exemplo, considere dados de pedidos de comércio eletrônico com informações sobre pedidos entregues ou devolvidos nos últimos 30 dias. Vamos supor que um usuário quer comparar a tendência diária de pedidos de um determinado produto em relação ao ano inteiro. A maioria dos dados de pedidos não são alterados, exceto os dados dos últimos 30 dias. No entanto, uma consulta que agrega devoluções de pedidos em cada dia do último ano precisa recalcular os resultados de cada um desses dias a cada execução. O caching de fragmentos de resultados aborda essa questão, armazenando em cache os fragmentos de resultado (ou seja, todas as partes de resultados de subárvores dos planos de consulta do Spark) e reutilizando-os nas execuções subsequentes da consulta. O caching de fragmentos de resultados permite maximizar a reutilização dos dados no cache com a reutilização dos fragmentos (partes do resultado) em consultas subsequentes. No caching de conjunto de resultados, a consulta precisa ser exatamente igual para a utilização de resultados do cache. Os fragmentos de resultados são armazenados em um bucket do S3 especificado pelo usuário e podem ser reutilizados em vários clusters. Esse recurso pode acelerar consultas, particularmente quando os resultados são significativamente menores que o conjunto de dados de entrada. Com o caching de fragmentos de resultados, consultas repetidas que agregam pedidos do último ano precisam calcular apenas os últimos 30 dias de dados alterados. Para os demais dias do ano, os resultados agregados podem ser obtidos diretamente do cache, aumentando consideravelmente a performance da consulta. A aceleração pode ser ainda mais pronunciada para consultas de dados predominantemente imutáveis e inseridos apenas para o dia atual (por exemplo, eventos de IoT, dados de clickstream etc.). Nos casos raros em que os dados são modificados, o caching de fragmentos de resultados detecta automaticamente e invalida os dados no cache, garantindo a precisão dos dados.

O caching de fragmentos de resultados está disponível em todas as regiões em que o tempo de execução do Amazon EMR para Apache Spark é oferecido.

Para começar a usar o caching de fragmentos de resultados, consulte a documentação aqui.