0% ont trouvé ce document utile (0 vote)
519 vues16 pages

Introduction à Apache Spark

Transféré par

MOHAMED ELRHAOUAT
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
519 vues16 pages

Introduction à Apache Spark

Transféré par

MOHAMED ELRHAOUAT
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Apache Spark

Question 1: Qu'est-ce que Spark?


Apache Spark est un framework open source principalement utilisé pour
l'analyse Big Data, l'apprentissage automatique et le traitement en temps réel. Le
framework fournit essentiellement une interface entièrement fonctionnelle pour
les programmeurs et les développeurs. Cette interface facilite grandement la
programmation en grappes complexes et les tâches d’apprentissage automatique.
 Apache Spark est une plateforme de traitement sur cluster générique.
 Assure un traitement parallèle et distribué sur des données massives.
 Réaliser des traitements par lot (batch Processing) ou à la volée (Stream
Processing).
 Intégrer tous les outils et technologies Big Data.
 Offre le traitement itératif, interactif et à la volée.
 Offre des APIs de haut niveau en Java, Scala, Python et R.
Question 2: Pourquoi utiliser Spark?
✓ 3 fois plus rapide que Hadoop.
✓ Utilise moins de ressources que Hadoop.
✓ Fonctionne en mémoire.
✓ Possibilité d’utiliser Spark avec hadoop.
✓ Résilient aux pannes.
Question 3: Composants de Spark ?
Apache Spark utilise une architecture en couches, comportant plusieurs
composants, dont l'objectif est de permettre de réaliser des traitements
performants tout en promettant un développement et une intégration facilitées. Il
est né à la base pour pallier les problèmes posés par Hadoop Map Reduce, mais
est devenu une entité à lui seul, offrant bien plus que le traitement par lot
classique.
1. Spark Core est le point central de Spark, qui fournit une plateforme
d'exécution pour toutes les applications Spark. De plus, il supporte un large
éventail d'applications.
2. Spark SQL se situe au-dessus de Spark, pour permettre aux utilisateurs
d'utiliser des requêtes SQL. Les données structurées et semi-structurées peuvent
ainsi être traitées grâce à Spark SQL, avec une performance améliorée.
3. Spark Streaming permet de créer des applications d'analyse de données
interactives. Les flux de données sont transformés en micro-lots et traités par-
dessus Spark Core.
[Link] Mllib ,la bibliothèque de machine learning MLlib fournit des
algorithmes de haute qualité pour l'apprentissage automatique. Ce sont des
librairies riches, très utiles pour les data scientistes, autorisant de plus des
traitements en mémoire améliorant la performance de ces algorithmes sur des
données massives.
5. Spark Graphx est le moteur d'exécution permettant un traitement scalable
utilisant les graphes, se basant sur Spark Core.
Question 4: Architecture de Spark ?
Les applications Spark s'exécutent comme un ensemble indépendant de processus
sur un cluster, coordonnés par un objet SparkContext dans le programme
principal, appelé driver program.
Pour s'exécuter sur un cluster, SparkContext peut se connecter à plusieurs types
de gestionnaires de clusters (Cluster Managers):
• Sur le gestionnaire autonome de Spark, qui est inclus dans Spark, et qui
présente le moyen le plus rapide et simple de mettre en place un cluster.
• Sur Apache Mesos, un gestionnaire de cluster général qui peut aussi tourner
sur Hadoop Map Reduce.
• Sur Hadoop YARN, le gestionnaire de ressources de Hadoop 2.
• Sur Kubernetes, un système open-source pour l'automatisation du déploiement
et la gestion des applications.
Ces gestionnaires permettent d'allouer les ressources nécessaires pour l'exécution
de plusieurs applications Spark. Une fois connecté, Spark lance des exécuteurs sur
les noeuds du cluster, qui sont des processus qui lancent des traitements et
stockent des données pour les applications. Il envoie ensuite le code de
l'application (dans un fichier JAR ou Python) aux exécuteurs. Spark
Context envoie finalement les tâches à exécuter aux exécuteurs.
Il est à noter que :
Chaque application a son lot d'exécuteurs, qui restent actifs tout au long de
l'exécution de l'application, ainsi, elles sont isolées les unes des autres, du point
de vue de l'orchestration (chaque driver exécute ses propres tâches), et des
exécuteurs (les tâches des différentes applications tournent sur des JVM
différentes). Ceci implique également que les applications (ou Jobs) Sparks ne
peuvent pas échanger des données, sans les enregistrer sur un support de stockage
externe.
Spark est indépendant du gestionnaire de cluster sous-jacent. Il suffit de
configurer Spark pour utiliser ce gestionnaire, il peut gérer ses ressources en
même temps que d'autres applications, même non-Spark.
L'application principale (driver) doit être à l'écoute des connexions entrantes
venant de ses exécuteurs.
Question 5: Quelles sont les caractéristiques de Spark?
• Performance de traitement
Il est possible de réaliser une vitesse de traitement très élevée avec Spark sur
des fichiers volumineux qui peut être jusqu'à 100x meilleur que Hadoop Map
Reduce, par exemple, et ceci grâce à des mécanismes tel que la réduction du
nombre de lectures écritures sur le disque, la valorisation du traitement
en mémoire et l'utilisation des mémoires cache et RAM pour les données
intermédiaires.
• Dynamicité
Il est facile de développer des applications parallèles, grâce aux opérateurs
haut niveau fournis par Spark (allant jusqu'à 80 opérateurs).
• Tolérance aux Fautes
Apache Spark fournit un mécanisme de tolérance aux fautes grâce aux RDD.
Ces structures en mémoire sont conçues pour récupérer les données en cas de
panne.
• Traitements à la volée
L'un des avantages de Spark par rapport à Hadoop Map Reduce, c'est qu'il
permet de traiter les données à la volée, pas uniquement en batch.
• Évaluations Paresseuses (Lazy Evaluations)
Toutes les transformations faites sur Spark RDD sont paresseuses de nature,
ce qui veut dire qu'elles ne donnent pas de résultat direct après leur exécution,
mais génèrent un nouvel RDD à partir de l'ancien. On n'exécute effectivement
les transformations qu'au moment de lancer une action sur les données.
• Support de plusieurs langages
Plusieurs langages de programmation sont supportés par Spark, tel que Java,
R, Scala et Python.
• Une communauté active et en expansion
Des développeurs de plus de 50 entreprises sont impliqués dans le
développement et l'amélioration de Spark. Ce projet a été initié en 2009 et est
encore en expansion.
• Support d'analyses sophistiquées
Spark est fourni avec un ensemble d'outils dédiés pour le streaming, les
requêtes interactives, le machine learning, etc
• Intégration avec Hadoop
Spark peut s'exécuter indépendamment ou sur Hadoop YARN, et profiter ainsi
de la puissance du système de fichiers distribué Hadoop HDFS.

Spark RDD et Traitement par Lots


Question 6: Spark RDD et Traitement par Lots?
Spark gravite autour du concept de " Resilient Distributed Dataset " ou RDD, qui
est une collection d'éléments tolérante aux fautes qui peut être gérée en parallèle.
Les RDDs utilisent la mémoire et l'espace disque selon les besoins.
• R pour Résilient: capable de récupérer rapidement en cas de
problèmes ou de conditions difficiles,
• D pour Distribué: partage les données sur les différents nœuds
participants pour une exécution parallèle,
• D pour Dataset: une collection de données composée d'éléments
séparés mais qui sont manipulés comme une unité compacte.
Il existe deux moyens de créer les RDDs :
• Paralléliser une collection existante en mémoire dans le programme
Driver.
• Le générer à partir d'un fichier enregistré sur un support de stockage
externe.
Question 7: Quelles sont les caractéristiques des RDDs ?
 Immutabilité et Lignée
Les RDDs dans Spark sont des collections immuables, c'est à dire qu’elles ne
sont jamais modifiées : toute transformation va créer un nouvel RDD au lieu
de modifier le RDD initial. Quand un nouvel RDD a été créé à partir d'un RDD
existant, ce nouvel RDD contient un pointeur vers le RDD parent. De même,
toutes les dépendances entre les RDDs sont loggées dans un graphe, plutôt que
directement sur les données. Ce graphe s'appelle Graphe de Lignée ou Lineage
Graph.
 Lazy Evaluation
Toutes les transformations dans Spark sont lazy (fainéantes), car elles ne
calculent pas le résultat immédiatement. Elles se souviennent des
transformations appliquées à un dataset de base (par ex. un fichier). Les
transformations ne sont calculées que quand une action nécessite qu'un résultat
soit retourné au programme principal. Cela permet à Spark de s'exécuter plus
efficacement.
Question 8: Comment créer des RDDs?
 En parallélisant des collections existantes :
Les collections parallélisées sont créées en appelant la
méthode parallelize du JavaSparkContext sur une collection existante dans
votre programme Driver. Les éléments de la collection sont copiés pour former
une structure distribuée qui peut être traitée en parallèle.
 À partir de fichiers enregistrés dans un support de stockage :
Spark peut créer une collection distribuée à partir de n'importe quelle source
de stockage supportée par Hadoop, incluant votre propre système de stockage,
HDFS, Cassandra, HBase, Amazon S3, etc
 À partir d’un autre RDD :
Grace aux transformations.
Question 8: Quelles sont les opérations sur les RDDs?
Les RDDs supportent deux types d'opérations:
• les transformations, qui permettent de créer une nouvelle collection
à partir d'un RDD existant
• les actions, qui retournent une valeur au programme driver après
avoir exécuté un calcul sur le RDD.

Spark SQL
Question 9: Qu'est-ce que Spark SQL ?
Spark SQL est un module de Spark pour le traitement des données structurées.
Contrairement aux RDD, les interfaces fournies par Spark SQL informent Spark
de la structure des données et traitements réalisés. En interne, Spark SQL utilise
ces informations pour réaliser des optimisations.
Il est possible d'interagir avec Spark SQL de deux façons : en utilisant SQL et
l'API Dataset. Pour ces deux interfaces, le même moteur d'exécution est utilisé
par Spark SQL, ce qui permet aux développeurs de passer facilement d'une API à
une autre.
 SQL
SQL est utilisé comme langage de requêtage dans Spark SQL. Ce dernier peut
également lire des données à partir d'une installation Hive existante. En
exécutant des requêtes SQL à partir d'autres langages de programmation, le
résultat est retourné sous forme de Dataset ou DataFrame.
 Datasets et DataFrames:
Un DataFrame est une structure organisée en colonnes nommées et non
typées. Il est conceptuellement équivalent à une table dans une base de données
relationnelle ou un data frame en Python ou R, avec en plus des optimisations
plus riches. Ils ont été conçus comme couche au-dessus des RDDs, pour
ajouter des métadonnées supplémentaires grâce à leur format tabulaire.
Les DataFrames peuvent être construites à partir de fichiers structurés, tables
dans Hive, bases de données externes ou de RDDs existants.
Un Dataset est une collection distribuée de données typées. C'est une nouvelle
structure ajoutée dans Spark 1.6 qui fournit les avantages des RDDs en plus de
ceux du moteur d'exécution optimisé de Spark SQL. C'est principalement une
amélioration des DataFrames, qui y rajoute le typage des données. Un dataset
peut être constuit à partir d'objets de la JVM, puis manipulé en utilisant les
transformations telles que map, flatmap, filter…
Question 10: Quelles sont les caractéristiques de Spark SQL?
• Intégré: Permet de mixer les programmes Spark avec les requêtes SQL, ce
qui autorise un requêtage de données structurées grâce à SQL ou à l'API
Dataframe en Java, Scala, Python et R.
• Accès unifié aux données: Les Dataframes et SQL dans Spark
communiquent de façon unifiée avec plusieurs sources de données telles
que Hive, Avro, Parquet, JSON et JDBC.
• Compatible avec Hive: Exécute des requêtes Hive sans modification sur
les données courantes. Spark SQL réécrit le frontend de Hive, permettant
une compatibilité complète avec les données, requêtes et UDFs de Hive.
• Connectivité standard: La connexion peut se faire via JDBC ou ODBC.
• Performance et scalabilité: Spark SQL incorpore un optimiseur, un
générateur de code et un stockage orienté colonnes. De plus, il profite de la
puissance du moteur Spark, qui fournit une excellente tolérance au fautes.
Question 11: Quelles est optimisation de Spark SQL avec Catalyst?

Spark SQL incorpore un optimiseur appelé Catalyst, basé sur des constructions
fonctionnelles en Scala. Il supporte une optimisation à base de règles (rule-based)
et à base de coût (cost_based). L'optimisation à base de règles utilise un ensemble
de règles pour déterminer comment exécuter une requête donnée, alors que
l'optimisation à base de coût trouve le meilleur moyen pour exécuter une requête
SQL. Cette dernière catégorie génère plusieurs règles, calcule les coûts induits par
chacune, et choisit la plus optimisée.
En interne, Catalyst contient une bibliothèque pour représenter des arbres et
appliquer des règles pour les manipuler. Par-dessus, d'autres bibliothèques ont été
construites pour assurer le traitement de requêtes relationnelles, ainsi que
plusieurs règles qui gèrent différentes phases de l'exécution des requêtes: analyse,
optimisation logique, planification physique et génération de code, pour compiler
des parties de la requête en Bytecode Java. Pour cette dernière opération, une autre
caractéristique de Scala, les quasiquotes, est utilisée, pour faciliter la génération
de code à l'exécution à partir d'expressions composables.

Spark Streaming
Question 12: Qu'est-ce que Spark Streaming?
Un flux de données (ou data stream) est une séquence non bornée de données qui
arrive de manière continue. Le streaming divise le flux continu des données en
unités discrètes pour les traiter. Le traitement de flux est un traitement à faible
latence, et une analyse des données en streaming.
Spark Streaming a été ajouté à Apache Spark en 2013, comme extension de
l'API de base de Spark, qui fournit un traitement de flux scalable, à haut débit et
tolérant aux fautes. L'ingestion de données peut être réalisée par plusieurs outils
tels que Apache Kafka, Apache Flume ou Amazon Kinesis, et le traitement peut
être fait grâce à des algorithmes complexes, exprimés par des fonctions de haut
niveau tel que map, reduce, join, etc. Finalement, les données traitées peuvent être
envoyées vers des systèmes de fichiers, bases de données ou tableaux de bord en
temps réels. Il est même possible de réaliser des algorithmes de machine learning
et de traitement de graphes sur les flux de données.

En interne, il fonctionne comme suit: Spark Streaming reçoit des données en


streaming et les divise en micro-batches, qui sont ensuite calculés par le moteur
de spark pour générer le flux final de résultats.

Au lieu de traiter les flux de données un élément à la fois, Spark Streaming les
discrétise en micro-lots. En d'autres termes, les récepteurs de Spark Streaming
acceptent les données en parallèle et les envoient sur la mémoire des noeuds
Workers de Spark. Ensuite, le moteur optimisé de Spark exécuter de courtes
tâches pour traiter les lots et envoyer les résultats à d'autre systèmes.
Contrairement au modèle d'opérateur continu, où le traitement est statiquement
alloué à un noeud, les tâches de Spark sont affectées aux Workers de façon
dynamique, sur la base de la localité des données et des ressources disponibles.
Ceci permet une meilleure répartition des charges et une récupération plus
rapide en cas de faute.
Chaque lot de données est un RDD dans Spark. Ceci permet aux données en
streaming d'être traitées grâche à n'importe quel code ou bibliothèque Spark
Question 13: Quelles sont les DStreams?
Spark Streaming divise le flux de données en lots appelés DStream (Discretized
Stream), qui représentent fondamentalement une séquence de RDDs.

Spark DStream est l'abstraction de base de Spark Streaming. C'est un flux continu
de données, qui reçoit en entrée des données à partir de sources diverses. Il peut
également être un flux de données généré à partir d'un flux en entrée. DStream est
un flux continu de RDD. Chaque RDD contient des données sur un intervalle
particulier.
Chaque opération sur un DStream s'applique à tous les RDD sous-jacents.
DStream offre ainsi au développeur une API de haut niveau pour faciliter le travail
sur les données en streaming.
Question 14: Quelles sont les opérations sur le DStreams?
Les opérations sur le DStreams peuvent être:
• Transformations: qui peuvent être:
▪ Sans état (Stateless): ce sont des transformations où le traitement sur
un lot n'a pas de dépendance avec les lots précédents. Les
transformations sans état sont de simples transformations RDD. Elles
s'appliquent sur chaque batch (et sur chaque RDD) du DStream. Ceci
inclut des transformations classiques telles
que map, filter, reduceByKey, etc.
▪ Avec état (Stateful): ces transformations utilisent des données ou des
résultats intermédiaires provenant des batches précédents. Les
transformations avec état sont des opérations sur les DStreams qui
suivent l'évolution des données à travers le temps. Les deux types de
transformations avec état sont les windowed operations, qui opèrent
sur une fenêtre glissante de périodes de temps, et
la updateStateByKey, utilisée pour suivre l'état à travers les
évènements de chaque clef.
• Output Operations : elles sont réalisées pour renvoyer un résultat après
les transformations. C'est l'équivalent des actions pour les RDDs. On peut
citer: print, save, etc.

Spark MLLib
Question 15: Qu'est-ce que Spark MLLib?
Spark MLLib est la librairie d'apprentissage automatique (Machine Learning) de
Spark. Son but est de rendre son utilisation facile et scalable. À un haut niveau
d'abstraction, elle fournit des outils tel que:
• Des algorithmes de machine learning classiques tel que la
classification, régression, clustering et filtrage collaboratif.
• L'extraction de caractéristiques (Features), transformation,
réduction de dimensions et sélection
• Les pipelines pour construire, évaluer et régler les pipelines ML.
• La persistence, pour sauvegarder et charger des algorithmes,
modèles et pipelines.
• Des utilitaires tel que l'algèbre linéaire, statistiques, manipulation des
données, etc.
À partir de la version 2.0 de Spark, la structure principale utilisée pour l'API
MLlib est DataFrame, en opposition aux RDD, car son utilisation est plus
intuitive et uniforme, et qu'elle facilite les transformations.
Question 16: Qu'est-ce que ML Pipelines?
Les pipelines ML fournissent un ensemble uniforme d'APIs au-dessus des
DataFrames, permettant de créer et accorder (tune) des pipelines pratiques de
machine learning.
Définition des Pipelines
En machine learning, il est commun d'exécuter une séquence d'algorithmes pour
traiter et apprendre à partir de données. Par exemple, un flux de traitement d'un
document texte peut inclure les étapes suivantes:
• Diviser chaque document en mots
• Convertir chaque mot en vecteur de caractéristiques numériques
• Créer un modèle prédictif en utiliser les vecteurs et les labels
MLLib permet de créer de tels flux (ou pipelines), en définissant une séquence de
PipelineStage, composés de Transformer et de Estimator qui doivent être
exécutés dans un certain ordre.
Transformer: Algorithme qui peut transformer un DataFrame en un autre
DataFrame. Par exemple, un modèle ML est un transformer qui transforme un
DataFrame avec des caractéristiques (ou features), en un DataFrame avec des
prédictions.
Estimator: Algorithme qui peut être appliqué sur un DataFrame pour produire un
Transformer. Par exemple, un algorithme d'apprentissage est un Estimator qui
s'entraîne sur un DataFrame pour produire un modèle.
Fonctionnement des Pipelines
Un pipeline est un ensemble d'étapes, où chaque étape est soit un Transformer soit
un Estimator. Ces étapes sont exécutés dans l'ordre, et le DataFrame en entrée est
transformé au fur et à mesure de son passage à travers ces étapes. Pour les étapes
exécutant un Transformer, la méthode transform() est appelée sur le DataFrame,
alors que pour les étapes exécutant un Estimator, c'est la fonction fit() qui est
appelée, résultant en la création d'un Transformer, qui à son tour, devient une
partie de la Pipeline.

Spark GraphX
Question 17: Qu'est-ce que Spark GraphX?
Spark GraphX est un composant Spark permettant le traitement à base de
graphes. A un niveau élevé, GraphX étend la structure Spark RDD en introduisant
une abstraction sous forme d'un graphe dirigé formé de sommets (vertex) et
d'arêtes (edge), auxquels sont attachées des propriétés.
Pour gérer ces structures, GraphX propose un ensemble d'opérateurs ainsi qu'une
version optimisée de l'API Pregel.
De plus, plusieurs algorithmes et constructeurs (builders) sont définis pour
simplifier le traitement et analyse de ces graphes.
Graphes de Propriétés
Question 18: Qu'est-ce que un Graphes de Propriétés?
Un graphe de propriétés est un multigraphe dirigé contenant des objets définis par
l'utilisateur attachés à chaque sommet et arête. Un multigraphe est un graphe
dirigé qui peut contenir plusieurs arêtes reliant les mêmes sommets source et
destination, permettant ainsi de modéliser des situations où les sommets peuvent
avoir plusieurs types de relations. Chaque sommet est représenté par un identifiant
unique de 64 bits (VertexId). Les arêtes doivent avoir chacune un sommet source
et un sommet destination.
Un graphe de propriété est paramétrisé par deux types: un sommet
(Vertex appelé VD) et une arête (Edge appelé ED). Ces types optimisés
remplacent les types classiques, même primitifs, de façon a réduire la taille en
mémoire réservée.
Pour définir des types personnalisés pour les sommets, il est préférable d'utiliser
l'héritage. Par exemple, pour définir des sommets de type Utilisateur et d'autres
de type Produit, on peut créer les classes suivantes:

Un graphe de propriétés correspond à une paire de RDDs contenant des propriétés


pour chaque sommet et arête. En conséquence, la classe Graph contient des
membres permettant d'accéder aux sommets et arêtes:

Les classes VertexRDD[VD] et EdgeRDD[RD] sont des versions optimisées des


RDD qui fournissent des fonctionnalités supplémentaires pour le traitement et
optimisation des graphes.
Nous présentons dans ce qui suit un exemple de graphe de propriétés montrant
plusieurs collaborateurs dans un projet de recherche:
En plus des sommets et arêtes du graphe de propriétés, GraphX présente
également une vue en triplet. Cette vue permet de faire la jointure des propriétés
des sommets et arêtes, équivalente à l'expression SQL suivante:

Ceci correspond graphiquement à la figure suivante:

La classe EdgeTriplet étend la classe Edge en ajoutant les


attributs srcAttr et dstAttr qui contiennent les propriétés source et destination. Le
code ressemblera à ce qui suit:

Question 19: Qu'est-ce que des Opérateurs GraphX?


De même que pour les RDDs, les graphes de propriétés ont également un
ensemble d'opérateurs qui prennent des fonctions définies par l'utilisateur et
produisent de nouveaux graphes avec des propriétés et une structure modifiée.
Les opérateurs utilisés sont divisés en plusieurs types:
1. Opérateurs structurels
GraphX supporte quelques opérateurs qui modifient la structure du graphe:
• reverse: retourne un nouveau graphe avec toutes les directions des
arêtes inversées.
• subgraph: retourne le sous-ensemble du graphe qui contient les
sommets et arêtes respectant les contraintes définies en paramètre,
ainsi que toutes les arêtes connectant les sommets respectant ces
contraintes.
• mask: retourne un sous-graphe qui contient les sommets et arêtes qui
existent aussi dans le graphe donné en entrée.
2. Opérateurs de jointure
Ces opérateurs permettent de joindre des données à partir de RDD externes avec
des graphes. Deux opérateurs sont définis:
• joinVertices: joint les sommets avec le RDD en entrée et retourne un
nouveau graphe avec les propriétés du sommet obtenues en
appliquant la fonction map définie par l'utilisateur au résultat des
sommets joints.
• outerJoinVertices: se comporte comme joinVertices mais la
fonction map est appliquée à tous les sommets et peut changer le type
de la propriété de l'arête.
3. Opérateurs d'agrégation et de voisinage:
Les opérateurs d'agrégation permettent de réunir des informations sur le voisinage
de chaque sommet.
• aggregateMessages applique une fonction définie par
l'utilisateur sendMsg à chaque triplet du graphe et utilise la
fonction mergeMsgpour agréger ces messages dans leur sommet
destination. Permet également de faire des opérations de
type map/reduce en remplaçant l'opérateur mapReduceTriplets qui
existait dans les anciennes versions de GraphX.
• collectNeighborIds et collectNeighbors: permettent de collecter les
sommets et les attributs voisins d'un sommet donné.
• degrees, inDegrees et outDegrees: permettent de calculer le degré de
chaque sommet, c'est à dire le nombre d'arêtes qui lui sont liées.
Question 20: Quelles sont les caractéristiques de Spark GraphX?
• Flexibilité
GraphX utilise les graphes pour le traitement. Il unifie les opérations d'ETL
(Extract, Transform and Load), l'analyse exploratoire et le traitement itératif
dans un seul système.
• Vitesse
Spark GraphX fournit une performance comparable aux systèmes de
traitement de graphes spécialisés les plus performants.
• Bibliothèque en expension
La bibliothèque de Graphx est en continuelle expension, et fournit des
algorithmes prêts à l'emploi tel que PageRank, SVD, etc.

Conclusion
• Pas de support pour le traitement en temps réel: Spark permet le
traitement en temps-presque-réel, car il utilise le traitement en micro-lot
plutôt que le traitement en streaming.
• Problèmes avec les fichiers de petite taille: Spark partitionne le traitement
sur plusieurs exécuteurs, et est optimisé principalement pour les grands
volumes de données. L'utiliser pour des fichiers de petite taille va rajouter
un coût supplémentaire, il est donc plus judicieux dans ce cas d'utiliser un
traitement séquentiel classique sur une seule machine.
• Pas de système de gestion des fichiers: Spark est principalement un
système de traitement, et ne fournit pas de solution pour le stockage des
données. Il doit donc se baser sur d'autres systèmes de stockage tel que
Hadoop HDFS ou Amazon S3.
• Coûteux: En tant que système de traitement en mémoire, le coût d'exécuter
Spark sur un cluster peut être très élevé en terme de consommation
mémoire.
• Nombre d'algorithmes limité: Malgré la disponibilité de la bibliothèque
MLlib, elle reste limitée en termes de nombre d'algorithmes implémentés.
• Latence: La latence de Spark pour l'exécution de Jobs à la volée est plus
élevée que d'autres solutions de traitement en streaming tel que Flink

Vous aimerez peut-être aussi