Introduction à RDD dans Spark

Un RDD qui signifie Resilient Distributed Dataset est l'un des concepts les plus importants de Spark. Il s'agit d'une collection d'enregistrements en lecture seule qui est partitionnée et distribuée sur les nœuds d'un cluster. Il peut être transformé en un autre RDD par le biais d'opérations et une fois qu'un RDD est créé, il ne peut pas être changé, mais un nouveau RDD sera créé.

Une caractéristique importante grâce à laquelle Spark a surmonté les limitations de Hadoop est via RDD car plutôt que de répliquer les données, les ensembles de données distribués résilients (RDD) conservent les données sur les nœuds d'un cluster et récupéreront les données à l'aide d'un graphique de lignage. Dans Hadoop, les données étaient stockées de manière redondante parmi les machines qui offraient la propriété de tolérance aux pannes. Ainsi, un RDD est une abstraction fondamentale fournie par Spark pour les données distribuées et le calcul.

Les différentes façons de créer un RDD sont

  • Chargement d'un ensemble de données externes
  • Passer les données via la méthode Parallelize
  • En transformant un RDD existant

Discutons chacun d'eux en détail, mais avant cela, nous devons mettre en place un spark-shell qui est le programme pilote de spark. Dans cet article, nous avons inclus les lignes de code dans scala. Les RDD peuvent avoir tout type d'objets Python, Java ou Scala, y compris des classes définies par l'utilisateur. Voici donc les étapes à suivre pour lancer spark-shell.

Lancement de Spark-Shell

Étape 1: Téléchargez et décompressez spark. Téléchargez la version actuelle de spark sur le site officiel. Décompressez le fichier téléchargé à n'importe quel emplacement de votre système.

Étape 2: configuration de Scala

  • Télécharger scala depuis scala lang.org
  • Installer scala
  • Définissez la variable d'environnement SCALA_HOME et définissez la variable PATH dans le répertoire bin de scala.

Étape 3: démarrez l'étincelle. Ouvrez l'invite de commande et accédez au dossier bin de spark. Execute- spark-shell.

Différentes façons de créer RDD

1. Chargement d'un ensemble de données externes

La méthode textFile de SparkContext est utilisée pour charger les données à partir de n'importe quelle source qui à son tour crée un RDD. Spark prend en charge un large éventail de sources à partir desquelles les données peuvent être extraites, telles que Hadoop, HBase, Amazon S3, etc. Une source de données est un fichier texte dont nous avons discuté ici. Outre les fichiers texte, l'API scala de spark prend également en charge d'autres formats de données tels que wholeTextFiles, fichier de séquence, Hadoop RDF et bien d'autres.

Exemple

val file = sc.textFile("/path/textFile.txt"") // relative path

La variable appelée fichier est un RDD, créé à partir d'un fichier texte sur le système local. Dans spark-shell, l'objet de contexte spark (sc) a déjà été créé et est utilisé pour accéder à spark. TextFile est une méthode d'une classe org.apache.spark.SparkContext qui lit un fichier texte à partir de HDFS, d'un système de fichiers local ou de tout URI de système de fichiers pris en charge par Hadoop, et le renvoie en tant que RDD de chaînes. Ainsi, l'entrée pour cette méthode est un URI et partitionne les données entre les nœuds.

2. Passer les données via la méthode Parallelize

Une autre façon de créer des RDD consiste à prendre une collection existante en mémoire et à la passer pour paralléliser la méthode de SparkContext. Bien que l'apprentissage de cette méthode de création de RDD soit très utile, car nous pouvons créer les RDD dans le shell et effectuer également des opérations. Il est rarement utilisé en dehors des tests et du prototypage car il nécessite que toutes les données soient disponibles sur la machine locale. Un point important à propos de la parallélisation est le nombre de partitions dans lesquelles la collection est divisée. Nous pouvons passer le nombre (partitions) comme deuxième paramètre dans la méthode de parallélisation et si le nombre n'est pas spécifié, Spark décidera en fonction du cluster.

  • Sans plusieurs partitions:

val sample = sc.parallelize(Array(1, 2, 3, 4, 5))

  • Avec un certain nombre de partitions:

val sample = sc.parallelize(List(1, 2, 3, 4, 5), 3)

3. En transformant un RDD existant

Il existe deux types d'opérations effectuées sur RDD.

  1. Transformations
  2. Actions

Les transformations sont des opérations sur RDD qui entraînent la création d'un autre RDD tandis que les actions sont les opérations qui renvoient une valeur finale au programme pilote ou écrivent des données sur un système de stockage externe. La carte et le filtre sont quelques opérations de transformation. Prenons un exemple de filtrage de certaines lignes d'un fichier texte. Initialement, un RDD est créé en chargeant le fichier texte. Ensuite, nous appliquons une fonction de filtrage qui filtrera un ensemble de lignes du fichier texte. Le résultat sera également un RDD. L'opération de filtrage ne modifie pas le RDD d'entrée existant. Au lieu de cela, il renvoie un pointeur vers un RDD entièrement nouveau qui est le rouge des erreurs. Nous pouvons toujours utiliser le RDD d'entrée pour d'autres calculs.

val inputRDD = sc.textFile("log.txt")val errorsRDD = inputRDD.filter(line => line.contains("error"))

L'exemple ci-dessous montre le même concept de transformation pour une fonction de carte. Le résultat est le RDD qui a été généré grâce à la fonction Map. Dans l'opération de cartographie, la logique sera définie et cette logique particulière sera appliquée à tous les éléments de l'ensemble de données.

val inputRDD = sc.parallelize(List(10, 9, 8, 7, 6, 5))val resultRDD = inputRDD.map(y => y * y)println(resultRDD.collect().mkString(", "))

Points importants à retenir

  • Parmi tous les frameworks actuellement disponibles, Apache spark est le dernier et gagne en popularité en raison de ses fonctionnalités uniques et de son approche simple. Il élimine tous les inconvénients posés par Hadoop ainsi que le maintien de la propriété de tolérance aux pannes et d'évolutivité de MapReduce. Pour atteindre ces objectifs, la plate-forme spark introduit le concept de RDD.
  • Il existe principalement trois façons de créer un RDD, la plus élémentaire étant le chargement de l'ensemble de données.
  • La méthode de parallélisation n'est largement utilisée qu'à des fins de test et d'apprentissage.
  • Une opération de transformation entraînerait un RDD.

Articles recommandés

Cela a été un guide pour RDD dans Spark. Ici, nous avons également discuté de différentes façons de créer un RDD, comment lancer Spark-Shell avec des points importants. Vous pouvez également parcourir nos articles pour en savoir plus-

  1. Qu'est-ce que RDD?
  2. Comment installer Spark
  3. Spark Streaming
  4. Spark DataFrame
  5. Qu'est-ce que les commandes Spark Shell?
  6. Guide de la liste des commandes du shell Unix

Catégorie: