Annexe C. Quand ne pas utiliser Spark
Apache Spark est un outil formidable pour traiter des données à grande échelle avec un parallélisme massif, mais toutes les tâches ne se prêtent pas forcément au parallélisme des données. Dans cette annexe, tu apprendras à analyser rapidement un problème et à repérer certains signes avant-coureurs indiquant que Spark pourrait faire plus de mal que de bien, ainsi que d’autres outils que tu pourrais envisager dans ces cas-là. Si certaines situations sont plus évidentes, comme coalesce(1), collect et toLocalIterator, tous les cas où le parallélisme des données n’est pas utile ne sont pas aussi simples. La manière la plus concluante de déterminer si l’utilisation de Spark est bénéfique consiste à écrire ton programme avec et sans Spark et à comparer les performances, mais cela n’est généralement pas faisable. Explorons donc plutôt quelques heuristiques simples pour y voir plus clair.
Conseil
Si tu as un job Spark existant et que tu constates qu’il exécute fréquemment une seule partition ou qu’il passe beaucoup de temps sans aucune tâche en cours d’exécution sur le cluster, l’utilisation de Spark n’en vaut peut-être pas la peine. Si tu ne souhaites pas refactoriser ton code pour supprimer Spark, tu peux essayer de passer du mode distribué au mode local.
On a tendance à penser que le principal inconvénient de l’utilisation d’Apache Spark par rapport à d’autres outils est la surcharge liée à la distribution. Bien qu’on puisse réduire en partie cet ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access