Revenir au contenu principal

Qu'est-ce que l'API Spark ?

Trois interfaces (RDD, DataFrames et Datasets) permettent aux développeurs de traiter des données distribuées dans plusieurs langages avec des performances optimisées.

4 Personas Analytics AIBI 2b

Summary

  • Les RDD offrent un contrôle de bas niveau pour le traitement des données non structurées grâce à des transformations fonctionnelles, tandis que les DataFrames organisent les données en colonnes nommées pour des opérations de type SQL.
  • Les Datasets combinent la sécurité des types des RDD avec les optimisations des DataFrames, offrant une vérification des erreurs à la compilation et tirant parti de l'optimiseur Catalyst pour une exécution améliorée.
  • Spark 2.0+ unifie les DataFrames et les Datasets en une API unique de haut niveau qui simplifie le développement tout en offrant des performances supérieures sur Python, Scala, Java et R.

Si vous travaillez avec Spark, vous croiserez certainement trois API : DataFrames, Datasets et RDD.

Que sont les Resilient Distributed Datasets ?

Les RDD, ou Resilient Distributed Datasets (datasets distribués résilients), sont des collections d'enregistrements avec calcul distribué. Ils sont, par nature, tolérants aux pannes et immuables. Ils peuvent être exploités parallèlement à des API de bas niveau, tandis que leur fonction « lazy » accélère les opérations spark. Les RDD prennent en charge deux types d'opérations :

  • Transformations : des opérations lazy renvoient un autre RDD ; le premier ne fait l'objet d'aucun calcul tant qu'il n'est pas la cible d'une action. Quelques exemples de transformations : map(), flatmap(), filter()
  • Actions : des opérations déclenchent un calcul et renvoient des valeurs. Quelques exemples d'actions : count, top(), savetofile()

Inconvénients des RDD

Si vous choisissez de travailler avec des RDD, vous devrez optimiser chacun d'eux. D'autre part, contrairement aux Datasets et aux DataFrames, les RDD n'infèrent pas le schéma des données acquises : vous devez le spécifier.

Que sont les DataFrames ?

Les DataFrames sont des collections distribuées de lignes sous des colonnes nommées. En termes simples, ils ressemblent à des tableaux Excel avec des en-têtes de colonne. On peut aussi les comparer à une table dans une base de données relationnelle, ou à un DataFrame en R ou en Python. Les DataFrames partagent trois caractéristiques avec les RDD :

  • Immuables de nature : vous pouvez créer un DataFrame mais vous ne pouvez pas le modifier. Un DataFrame est simplement un RDD qui peut être transformé
  • Évaluations lazy : aucune tâche n'est exécutée tant qu'une action n'est pas réalisée.
  • Distribué : les DataFrames, comme les RDD, sont de nature distribuée.

Comment créer un DataFrame

Plusieurs méthodes permettent de créer des DataFrames dans Spark :

  • En utilisant différents formats de données. Par exemple, en chargeant des données depuis un fichier JSON, CSV, RDBMS, XML ou Parquet
  • En chargeant les données depuis un RDD existant.
  • En spécifiant un schéma de façon programmatique.
UN LEADER 5X

Gartner® : Databricks, leader des bases de données cloud

Inconvénients des DataFrames

Le principal inconvénient de l'API DataFrame est qu'elle ne prend pas correctement en charge le temps de compilation. Autrement dit, l'utilisateur est confronté à un obstacle lorsque la structure des données n'est pas connue.

Que sont les Datasets ?

Les Datasets sont des collections d'objets immuables et fortement typées correspondant à un schéma relationnel. Vous pouvez en créer à partir d'objets JVM et les manipuler à l'aide de transformations fonctionnelles complexes. Les Datasets peuvent être créés de deux manières :

  • De façon dynamique
  • En lisant un fichier JSON à l'aide de SparkSession.

Inconvénients des DataSets

Le principal inconvénient des datasets est qu'ils doivent être convertis en chaînes.
 

Ressources complémentaires

Ne manquez jamais un article Databricks

Abonnez-vous à notre blog et recevez les derniers articles dans votre boîte mail.