Différences entre RDD, blocs de données et ensembles de données dans Spark

Contenu

Vue d'ensemble

  • Comprendre la différence entre les API 3 des étincelles: RDD, blocs de données et ensembles de données
  • Nous allons voir comment créer RDD, blocs de données et ensembles de données.

introduction

Ont réussi 11 ans depuis Apache Spark a commencé à exister et, de manière impressionnante et continue, est devenu le premier choix des développeurs de Big Data. Les développeurs ont toujours aimé fournir des API simples et puissantes capables d'effectuer tout type d'analyse de Big Data..

Ensembles de données de trame de données RDD

Initialement, dans 2011 est venu avec le concept de RDD, après dans 2013 avec Dataframes et plus tard dans 2015 avec le concept de Datasets. Aucun d'entre eux ne s'est déprécié, nous pouvons toujours les utiliser tous. Dans ce billet, nous comprendrons et verrons la différence entre les trois.

Table des matières

  1. Que sont les RDD?
  2. Quand utiliser RDD?
  3. Que sont les trames de données?
  4. Que sont les ensembles de données?
  5. RDD vs Dataframes vs Datasets?

Que sont les RDD?

Les RDD ou ensembles de données distribués résilients sont la structure de données fondamentale de Spark. C'est la collection d'objets qui est capable de stocker des données partitionnées dans les multiples nœuds du cluster et leur permet également de faire le traitement en parallèle..

Il est tolérant aux pannes si vous effectuez plusieurs transformations sur le RDD puis, pour toute circonstance, certains nœuds échouent. El RDD, dans ce cas, est capable de récupérer automatiquement.

RDDIl y a 3 alternatives pour créer un TSA:

  1. Parallèlement à une collecte de données existante
  2. Référence au fichier de données externe stocké
  3. Créer un RDD à partir d'un RDD existant

Quand utiliser RDD?

Nous pouvons utiliser RDD dans les situations suivantes:

  1. Lorsque nous voulons faire des transformations de bas niveau sur l'ensemble de données. En savoir plus sur les transformations RDD: PySpark pour effectuer des transformations
  2. Ne déduit pas automatiquement le schéma des données ingérées, nous devons spécifier le schéma de chaque ensemble de données lorsque nous créons un RDD. Apprenez à déduire le schéma RDD ici: Construire des pipelines de machine learning avec PySpark

Que sont les trames de données?

Il a été introduit pour la première fois dans la version Spark 1.3 pour surmonter les limitations de Spark RDD. Les Spark Dataframes sont la collection distribuée de points de données, mais ici, les données sont organisées en colonnes nommées. Permettre aux développeurs de déboguer le code tout au long de l'exécution, ce qui n'était pas autorisé avec les RDD.

Les trames de données peuvent lire et écrire les données dans divers formats comme CSV, JSON, EURO, Tables HDFS et HIVE. Il est déjà optimisé pour traiter de grands ensembles de données pour la plupart des tâches de prétraitement, nous n'avons donc pas besoin d'écrire nous-mêmes des fonctions complexes.

Utilise un optimiseur de catalyseur à des fins d'optimisation. Si vous souhaitez en savoir plus sur l'optimiseur de catalyseur, Je vous recommande fortement de lire ce post: Tutoriel pratique pour analyser des données avec Spark SQL

Voyons comment créer un bloc de données à l'aide de PySpark.

Que sont les ensembles de données?

Spark Datasets est une extension de l'API Data Frames avec les avantages des RDD et des ensembles de données. C'est rapide et fournit une interface de type sécurisé. La sécurité de type signifie que le compilateur validera les types de données de toutes les colonnes de l'ensemble de données uniquement lors de la compilation et générera une erreur en cas de divergence dans les types de données.

ensembles de données

Les utilisateurs de RDD le trouveront quelque peu similaire au code, mais c'est plus rapide que RDD. Peut traiter efficacement les données structurées et non structurées.

Nous ne pouvons toujours pas créer d'ensembles de données Spark en Python. L'API de jeu de données n'est activée que dans Scala et Java.

RDD vs Data Frames vs Data Sets

RDD Trames de données Ensembles de données
Représentation des données RDD est une collection distribuée d'éléments de données sans aucun schéma. C'est aussi la collection distribuée organisée dans les colonnes nommées. C'est une extension de Dataframes avec plus de fonctionnalités telles que la sécurité de type et l'interface orientée objet.
Amélioration Pas de moteur d'optimisation intégré pour RDD. Les développeurs doivent écrire eux-mêmes le code optimisé. Utilise un optimiseur de catalyseur pour l'optimisation. Utilise également un optimiseur de catalyseur à des fins d'optimisation.
Projection du contour Ici, nous devons définir le schéma manuellement. Il découvrira automatiquement le schéma de l'ensemble de données. De plus, il trouvera automatiquement le schéma du jeu de données via le moteur SQL.
Opération d'agrégation RDD est plus lent que les trames de données et les ensembles de données pour effectuer des opérations simples comme le regroupement de données. Fournit une API simple pour effectuer des opérations d'agrégation. Effectue l'agrégation plus rapidement que les RDD et les ensembles de données. L'ensemble de données est plus rapide que les RDD mais légèrement plus lent que les Dataframes.

Remarques finales

Dans ce billet, nous avons vu la différence entre les trois principales API d'Apache Spark. Ensuite, compléter, si vous voulez une sémantique riche, abstractions de haut niveau, sécurité des types, elija Dataframes o Datasets. Si vous avez besoin de plus de contrôle sur la partie prétraitement, vous pouvez toujours utiliser les RDD.

Je vous recommande de consulter ces ressources supplémentaires sur Apache Spark pour renforcer vos connaissances:

Si vous avez trouvé cet article informatif, Partage-le avec tes amis, et aussi si vous voulez donner des suggestions sur ce qui devrait être couvert, n'hésitez pas à les laisser dans les notes ci-dessous.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.