Introduction au jeu de données Spark

L'ensemble de données est une structure de données dans Spark SQL qui offre une sécurité de type à la compilation, l'interface orientée objet ainsi que l'optimisation de Spark SQL.

Conceptuellement, c'est une structure tabulaire en mémoire ayant des lignes et des colonnes qui est répartie sur plusieurs nœuds comme Dataframe.

Il s'agit d'une extension du Dataframe. La principale différence entre le Dataset et le DataFrame est que les Datasets sont fortement typés.

(Dataset) = (Dataframe + sécurité de type compilation)

L'ensemble de données a été publié dans Spark 1.6 en tant qu'API expérimentale. Dataframe et Dataset sont unifiés dans la version Spark 2.0 et Dataframe devient un alias pour Dataset (Row).

Dataframe = Dataset (Row)

Pourquoi avons-nous besoin de Spark Dataset?

Pour avoir une compréhension claire de Dataset, nous devons commencer par un peu d'histoire de spark et de son évolution.

RDD est le cœur de Spark. Inspiré par SQL et pour faciliter les choses, Dataframe a été créé au dessus de RDD. Dataframe est équivalent à une table dans une base de données relationnelle ou à un DataFrame en Python.

RDD offre une sécurité de type à la compilation mais il n'y a pas d'optimisation automatique dans RDD.

Dataframe fournit une optimisation automatique mais il manque de sécurité de type à la compilation.

L'ensemble de données est ajouté en tant qu'extension du Dataframe. L'ensemble de données combine les fonctionnalités du RDD (c.-à-d. La sécurité du type à la compilation) ainsi que du Dataframe (c.-à-d. L'optimisation automatique Spark SQL).

(RDD (Spark 1.0)) -> (Dataframe (Spark1.3)) -> (Dataset (Spark1.6))

Comme Dataset a une sécurité au moment de la compilation, il n'est donc pris en charge que dans un langage compilé (Java et Scala) mais pas dans un langage interprété (R et Python). Mais l'API Spark Dataframe est disponible dans les quatre langues (Java, Scala, Python et R) prises en charge par Spark.

Langue prise en charge par SparkAPI DataframeAPI de jeu de données
Langage compilé (Java et Scala)OUIOUI
Langage interprété (R & Python)OUINON

Comment créer un ensemble de données Spark?

Il existe plusieurs façons de créer un ensemble de données basé sur un cas d'utilisation

1. Créez d'abord SparkSession

SparkSession est un point d'entrée unique vers une application spark qui permet d'interagir avec la fonctionnalité Spark sous-jacente et de programmer Spark avec DataFrame et les API Dataset.

val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()

  • Pour créer un ensemble de données en utilisant une structure de données de base comme Range, Sequence, List, etc.:

Utilisation de Range

Utilisation de la séquence

Utilisation de la liste

  • Pour créer un ensemble de données à l'aide de la séquence de classes de cas en appelant la méthode .toDS ():

  • Pour créer un ensemble de données à partir de RDD à l'aide de .toDS ():

  • Pour créer l'ensemble de données à partir de Dataframe à l'aide de la classe de cas:

  • Pour créer l'ensemble de données à partir de Dataframe à l'aide de Tuples:

2. Opérations sur l'ensemble de données Spark

  1. Exemple de compte de mots

  1. Convertir le jeu de données Spark en Dataframe

Nous pouvons également convertir Spark Dataset en Datafame et utiliser les API Dataframe comme ci-dessous:

Caractéristiques du jeu de données Spark

  1. Type de sécurité

L'ensemble de données offre une sécurité de type à la compilation. Cela signifie que la syntaxe, ainsi que les erreurs d'analyse de l'application, seront vérifiées au moment de la compilation avant son exécution.

  1. Immutabilité

L'ensemble de données est également immuable comme RDD et Dataframe. Cela signifie que nous ne pouvons pas modifier l'ensemble de données créé. Chaque fois qu'un nouvel ensemble de données est créé lorsqu'une transformation est appliquée à l'ensemble de données.

  1. Schéma

L'ensemble de données est une structure tabulaire en mémoire qui comporte des lignes et des colonnes nommées.

  1. Performance et optimisation

Comme Dataframe, l'ensemble de données utilise également Catalyst Optimization pour générer un plan de requête logique et physique optimisé.

  1. Langage de programmation

L'API du jeu de données n'est présent qu'en Java et Scala qui sont des langages compilés mais pas en Python qui est un langage interprété.

  1. Évaluation paresseuse

Comme RDD et Dataframe, l'ensemble de données effectue également l'évaluation paresseuse. Cela signifie que le calcul ne se produit que lorsque l'action est effectuée. Spark ne fait que des plans pendant la phase de transformation.

  1. Sérialisation et collecte des ordures

Le jeu de données Spark n'utilise pas de sérialiseurs standard (sérialisation Kryo ou Java). Au lieu de cela, il utilise les encodeurs rapides en mémoire de Tungsten, qui comprennent la structure interne des données et peuvent transformer efficacement des objets en stockage binaire interne. Il utilise la sérialisation des données hors segment à l'aide de l'encodeur Tungsten et il n'est donc pas nécessaire de récupérer les ordures.

Conclusion

L'ensemble de données est le meilleur du RDD et du Dataframe. RDD offre une sécurité de type à la compilation mais il n'y a pas d'optimisation automatique. Dataframe fournit une optimisation automatique mais il manque de sécurité de type à la compilation. L'ensemble de données offre à la fois une sécurité de type à la compilation et une optimisation automatique. Par conséquent, l'ensemble de données est le meilleur choix pour les développeurs Spark utilisant Java ou Scala.

Articles recommandés

Ceci est un guide de Spark Dataset. Ici, nous expliquons comment créer un ensemble de données Spark de plusieurs manières avec des exemples et des fonctionnalités. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Commandes Spark Shell
  2. Questions d'entretiens chez Spark
  3. Carrière à Spark
  4. Spark Streaming
  5. Différentes opérations liées aux tuples
  6. Spark SQL Dataframe
  7. Types de jointures dans Spark SQL (exemples)
  8. Guide de la liste des commandes du shell Unix
  9. 6 principaux composants de Spark

Catégorie: