Revenir au contenu principal

Spark API

Essayer Gratuitement Databricks

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()
    API Spark : transformations RDD
  • Actions : des opérations déclenchent un calcul et renvoient des valeurs. Quelques exemples d'actions : count, top(), savetofile()
    API SPART : actions RDD

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.

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

Retour au glossaire