Publié le: Jul 11, 2022

L'environnement d'exécution Amazon EMR pour Apache Spark est optimisé pour les performances, disponible et activé par défaut sur les clusters Amazon EMR 5.28 et supérieurs. Cet environnement est jusqu'à 3 fois plus rapide et profite d'une compatibilité totale des API avec la solution Spark open source.

Aujourd'hui, nous avons le plaisir d'annoncer Result Fragment Caching, une nouvelle fonctionnalité disponible dans l'environnement d'exécution EMR pour Apache Spark qui contribuera à accélérer les requêtes ciblant un sous-ensemble statique de données. Durant nos tests internes dérivés du test de référence TPC-H, les requêtes employant des fonctions de fenêtre rotatives et incrémentielles affichaient constamment des améliorations de performances jusqu'à 15,6 fois supérieures grâce à Result Fragment Caching.

Les clients disposent souvent de données dans Amazon S3 qui ne changent pas dans le temps. Cela dit, les requêtes répétées sur ce type de jeux de données obligent à recalculer les résultats à chaque exécution. Prenons comme exemple des données de commandes d'e-commerce contenant des informations sur les commandes expédiées ou renvoyées dans les 30 jours. Imaginez qu'un client souhaite comparer la tendance quotidienne des commandes pour un produit donné sur l'année entière. Les données de commandes restent majoritairement inchangées, à l'exception des données des 30 derniers jours, mais une requête qui regroupe les retours de commande pour chaque jour de l'année passée devrait recalculer les résultats pour chaque jour de l'année, et ce, à chaque exécution. Result Fragment Caching améliore cette partie du processus en mettant automatiquement en cache les fragments de résultats, c'est-à-dire toutes les parties des résultats des sous-arbres de plans de requête Spark, puis en réutilisant les résultats dans les exécutions suivantes de la requête. Result Fragment Caching permet une réutilisation maximale des données en cache car les fragments, c'est-à-dire les parties des résultats, peuvent être réutilisés dans les requêtes suivantes, contrairement à la mise en cache Result Set où la requête devait faire une correspondance exacte pour pouvoir renvoyer les résultats depuis le cache. Les fragments de résultats sont stockés dans un compartiment S3 conçu par le client et peuvent être réutilisés sur plusieurs clusters. Cela permet d'accélérer les requêtes, surtout lorsque les résultats sont nettement plus petits que le jeu de données d'entrée. Avec Result Fragment Caching, les requêtes répétées regroupant les commandes de l'année passée n'auront à recalculer que les données modifiées sur les 30 derniers jours et pour tous les jours précédents de l'année, les résultats agrégés ont simplement à être récupérés du cache, ce qui améliore nettement les performances de la requête. Cette amélioration peut être davantage accentuée pour les requêtes sur des données majoritairement immuables et uniquement insérées pour le jour en cours, par exemple pour les événements d'IoT, les données de flux de clics, etc. Dans les rares cas où les données sont modifiées, Result Fragment Caching détecte automatiquement les données en cache et les invalide pour assurer la précision des données.

Result Fragment Caching est disponible dans toutes les régions où l'environnement d'exécution Amazon EMR pour Apache Spark est disponible.

Pour démarrer avec Result Fragment Caching, consultez notre documentation ici.