AceReady
Apache Spark
Question 1 sur 13
Intermédiaire

Quelle est la différence entre un RDD et un DataFrame dans Apache Spark ?

Réponse

Un RDD (Resilient Distributed Dataset) est l'abstraction de bas niveau de Spark, une collection distribuée d'objets sans structure de schéma connue par Spark, sur laquelle on programme avec des transformations fonctionnelles comme map et filter, avec un contrôle fin mais peu d'optimisations automatiques. Un DataFrame ajoute une structure tabulaire avec des colonnes typées et nommées, comme une table de base de données, ce qui permet à Spark de connaître le schéma des données et d'appliquer un optimiseur de requêtes, Catalyst, qui réorganise et optimise les opérations avant de les exécuter. En pratique, les DataFrames sont largement préférés aujourd'hui pour leurs performances et leur API plus expressive, les RDD restant réservés à des cas qui ont vraiment besoin du contrôle bas niveau.

Piège classique

Le piège est de mélanger allègrement opérations sur RDD et sur DataFrame dans le même traitement sans en mesurer le coût : convertir entre les deux représentations n'est pas gratuit, et repasser par un RDD au milieu d'un pipeline DataFrame prive Spark de la capacité de l'optimiseur Catalyst à voir et optimiser l'ensemble du traitement de bout en bout.