Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Refcard Apache Spark Appliqué à la Data Science

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 16 Publicité

Refcard Apache Spark Appliqué à la Data Science

Télécharger pour lire hors ligne

Spark est un outil qui répond notamment en enjeux liés au big data. Il s'agit d'un framework de calcul distribué qui permet de traiter des volumes de données sur un cluster de machines.

Spark est un outil très pertinent lorsque nous parlons de Big Data; pourquoi ? Car il est permet de paralléliser les calculs sur de gros volumes de données, donc d’aller plus vite. Afin d'entraîner son algorithme, le Data Scientist a souvent besoin d’un volume de données important. Il serait donc tenté d’utiliser Spark. Néanmoins afin de l’utiliser à bon escient il lui est nécessaire de savoir ce qu’est réellement Spark, comment il fonctionne, comment on l’installe et comment on le maintient.

Cette Cheat Sheet propose un tour d'horizon possibilités de cet outil et répondra aux principales questions que pourra se poser un data scientist : l'utilisation de Spark est-elle pertinente dans tel ou tel cas ? Dans quelle mesure et avec quelles limites ? Pour quel type de dataset ?

Prenez un ticket et découvrez Spark à travers les différentes attractions !



Spark est un outil qui répond notamment en enjeux liés au big data. Il s'agit d'un framework de calcul distribué qui permet de traiter des volumes de données sur un cluster de machines.

Spark est un outil très pertinent lorsque nous parlons de Big Data; pourquoi ? Car il est permet de paralléliser les calculs sur de gros volumes de données, donc d’aller plus vite. Afin d'entraîner son algorithme, le Data Scientist a souvent besoin d’un volume de données important. Il serait donc tenté d’utiliser Spark. Néanmoins afin de l’utiliser à bon escient il lui est nécessaire de savoir ce qu’est réellement Spark, comment il fonctionne, comment on l’installe et comment on le maintient.

Cette Cheat Sheet propose un tour d'horizon possibilités de cet outil et répondra aux principales questions que pourra se poser un data scientist : l'utilisation de Spark est-elle pertinente dans tel ou tel cas ? Dans quelle mesure et avec quelles limites ? Pour quel type de dataset ?

Prenez un ticket et découvrez Spark à travers les différentes attractions !



Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à Refcard Apache Spark Appliqué à la Data Science (20)

Publicité

Plus par OCTO Technology (20)

Plus récents (20)

Publicité

Refcard Apache Spark Appliqué à la Data Science

  1. 1. THERE IS A BETTER WAY octo.com I blog.octo.com QUICK REFERENCE CARD Appliqué à la Data Science APACHE Spark
  2. 2.  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY Prenez un ticket et découvrez Spark à travers les différentes attractions ! Pourquoi Spark ? Spark est un framework de calcul distribué qui permet de traiter des volumes de données dépassant le téraoctet sur un cluster de machines. Bienvenue chez Spark.  SPARK Si je veux exécuter une opération de transformation sur un gros volume de données, comment faire pour que plusieurs ordinateurs se partagent la tâche ? C’est d’abord l’algorithme MapReduce qui a réussi à accomplir cette tâche sur des machines généralistes (commodity hardware). Hadoop est le framework Open Source qui a permis de populariser son utilisation. Spark est venu après pour pallier certaines faiblesses d’Hadoop.
  3. 3.  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY L’évolution de Spark.  QUELLE EST LA SPÉCIFICITÉ DE SPARK ? L’algorithme MapReduce implémenté par Hadoop stocke tous les résultats intermédiaires sur le disque lors des calculs en plusieurs étapes. Spark, quant à lui, conserve ces résultats en mémoire vive et y effectue la plupart des opérations de base, ce qui accélère considérablement le traitement. 2004 MapReduce (Google) Hadoop Open Source 2008 2009 Création Spark (AMPLab, Berkeley) 2010 Spark Open Source 2013 2016 2020 Spark transmis à Apache Spark 2.0 orienté Dataframe Spark 3.0 3.0 2.0
  4. 4. Sur quelle architecture fait-on tourner Spark ?  Pour utiliser le stockage et les ressources répartis entre plusieurs machines, Spark a besoin de deux composants : un gestionnaire de ressources et un système de fichiers distribué. Historiquement, l’écosystème Hadoop fournissait ces deux outils. Moteur de traitement des données : opère sur de grands volumes de données Cluster d’ordinateurs : commodity hardware Spark étant une simple couche logicielle, comment obtient-il des ressources de CPU, RAM et disque pour fonctionner ? Il doit faire appel à un autre système, comme Hadoop, pour les lui fournir. D’autres outils comme Kubernetes permettent aussi de gérer ces ressources. Machines Spark Gestionnaire de ressources : alloue les ressources du cluster Hadoop YARN HDFS Système de fichiers distribué : partitionne, réplique et répartit les données Hadoop On premise  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  5. 5. Sur quelle architecture fait-on tourner Spark ?  Le développement du Cloud a ouvert de nouvelles possibilités pour que les utilisateurs de Spark n’aient pas besoin d’acheter et gérer un cluster de machines pour traiter leurs données. Les fournisseurs de Cloud proposent différents types de services, qui permettent de s’affranchir d’un nombre plus ou moins important de composants nécessaires au fonctionnement de Spark. Clusters standalone / Hadoop / Kubernetes Il est possible de louer des clusters de machines, sur lesquels on peut installer soi-même Hadoop ou Kubernetes pour faire tourner Spark. Les services semi-managés Il est possible de louer un cluster sur lequel Hadoop ou Kubernetes est déjà installé. Les services managés Ces services permettent de faire totalement abstraction des composants sur lesquels s’appuie Spark, sans fournir d’accès direct aux machines. Sur le Cloud  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  6. 6. Comment fonctionne Spark ?  Les APIs Spark dispose d’APIs dans cinq environnements différents (Java / Scala / Python / R / .Net). L’accès et la manipulation des données dans Spark sont possibles grâce à trois différents types d’abstraction, qui sont apparus au fil du développement du framework. La forme la plus primitive, l’API RDD, s’occupe, sous le capot, de distribuer le traitement d’un jeu de données aux différentes machines et de garder la trace des transformations effectuées. L’utilisation de l’API RDD est déconseillée au profit de DataFrame et Dataset, qui sont plus simples d’utilisation et bénéficient du moteur d’optimisation de Spark : Catalyst. RDD - Spark 1.0 Le Resilient Distributed Dataset est la structure primitive de Spark. Cet objet Scala est immuable, et chaque transformation d’un RDD en génère un nouveau. DataFrame - Spark 1.3 Le DataFrame est une interface introduite avec Spark SQL pour faciliter la manipulation des données grâce à ses colonnes nommées. DataSet - Spark 1.6 Le Dataset est disponible en Scala et en Java. C’est un DataFrame qui associe à chacune de ses colonnes un type de données qui sera vérifié à la compilation.  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  7. 7. Qu’est-ce que Spark apporte au Data Scientist ?  Permet de traiter des volumes importants avec rapidité (en ETL par exemple). Les opérations qui sont facilement parrallélisables, telles que l’optimisation d’hyperparamètres et le traitement de séries temporelles indépendantes, gagnent également en rapidité. Distribution des calculs Spark recalcule facilement toute partition de RDD perdue en remontant la chaîne de transformations qui l’avait produite. Tolérance aux pannes Spark dispose de nombreux connecteurs vers de nombreuses DataSources ex: csv, parquet, json, ES, C*, JDBC, MySQL, PostGre. Compatibilité Un écosystème et des outils propices au Data Scientist Koalas Librairie équivalente à Pandas sur Spark. Spark SQL Manipulation des données avec des requêtes SQL. Spark Structured Streaming Traitement de flux de données. Spark ML Librairie de Machine Learning adaptée pour le calcul distribué.  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  8. 8. Attention ! Cet outil doit être utilisé lorsque le volume de données le justifie, car Spark est contraignant sur certains aspects : L’installation, l’industrialisation et le monitoring de clusters Spark demande des compétences OPS et une quantité de travail non négligeable*. *Cette difficulté peut toutefois être atténuée en utilisant un service managé dans le Cloud. Voir la section "Sur quelle architecture fait-on tourner Spark?" L’infrastructure distribuée sur laquelle Spark repose est moins performante sur les opérations nécessitant que toute la donnée soit en mémoire sur une seule machine (tri, traitement de séries temporelles).  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  9. 9. Quand utiliser SparkML pour le Machine Learning ?  Spark est souvent nécessaire pour le traitement et la transformation des données brutes. Cependant, une fois cette étape passée, il est fréquent que le jeu de données résultant, qui servira à entraîner un modèle, soit suffisamment petit pour permettre l’utilisation d’outils de Machine Learning qui ne tournent pas sur Spark. Volume du jeu de données d’entraînement encore très important après transformation ? (de l’ordre du téraoctet) Certains algorithmes de Spark ML sont moins précis car ils ont dû être adaptés au calcul distribué. Utiliser Scikit-learn ou TensorFlow. Algorithme disponible dans Spark ML ? Utiliser un échantillon des données avec Scikit-learn ou TensorFlow. Spark ML est bien moins mature pour le ML et le DL. Utiliser Spark ML. Oui Non Oui Non ? ?  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  10. 10. Feature Engineering avec PySpark 1 - Importer et initialiser PySpark import pyspark from pyspark.context import SparkContext from pyspark.sql.session import SparkSession sc = SparkContext(‘local’) spark = SparkSession(sc) 2 - Charger les données Charger un fichier CSV dans un DataFrame : df = spark.read.csv (‘file.csv’, schema=None, samplingRatio=0.3) schema : schéma du DataFrame à charger samplingRatio : ratio des données utilisées pour déduire le schéma si ce dernier n’est pas précisé 3 - Visualiser le contenu du DataFrame Afficher les données du DataFrame : df.show(n, truncate) truncate=True : tronque les chaînes de plus de 20 caractères par défaut Afficher le schéma du DataFrame : df.printSchema() 4 - Explorer les données Description statistique des données : df.describe() Tableau croisé entre deux colonnes : df.crosstab(‘col_1’, ‘col_2’) 1  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  11. 11. Feature Engineering avec PySpark 5 - Nettoyer les données Données manquantes : df = df.na.drop() # suppression df = df.na.fill() # remplacement Données dupliquées : df.dropDuplicates() 8 - Opérations coûteuses pour Spark Trier le DataFrame : df.orderBy(col) # ordre ascendant df.orderBy(col.desc()) # ordre descendant Faire une jointure : df.join(df_2, col_1 == col_2, how=‘inner’) 6 - Sélectionner des données Sélectionner des colonnes : df.select (‘col_nom’) Filtrer selon une condition : df.filter (condition) Partitionner et agréger : df.groupby(‘col_nom’) .count () .sum () .max () .skewness () .stddev () .variance () 7 - Opérations sur les colonnes Créer une nouvelle colonne : df = df.withColumn(‘col_nom’, fonction) Renommer une colonne : df.withColumnRenamed(‘nom’,‘nouveau_nom’) Supprimer des colonnes : df = df.drop(‘col_nom_1’, ‘col_nom_2’) Reformater une colonne de dates : df.select(date_format(‘date_col’, ‘MM/dd/yyy’).alias(‘date’)) 2  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  12. 12. Feature Engineering avec PySpark 9 - Rassembler les features en une seule colonne Le modèle de régression requiert que les features de chaque exemple soient regroupées dans un seul et même vecteur. Le VectorAssembler est un Transformer qui permet d’assembler plusieurs colonnes du jeu de données en une seule colonne de vecteurs, que l’on nommera features. from pyspark.ml.feature import VectorAssembler assembler = VectorAssembler( inputCols=[‘feature_1’,’feature_2’], outputCol=‘features’ ) data = assembler.transform(df) 10 - Diviser le jeu de données entre train et test train, test = df.randomSplit([0.7, 0.3], seed) 11 - Définir un modèle de régression logistique from pyspark.ml.classifiation import LogisticRegression 12 - Optimiser les hyperparamètres avec une Validation Croisée from pyspark.ml.tuning import ParamGridBuilder import CrossValidator grid = ParamGridBuilder().addGrid(lr.regParam,[0.5,0.02]).build() cv = CrossValidator(lr, estimatorParamMaps=grid, evaluator=BinaryClassificationEvaluator(), numFolds) 13 - Entraîner le modèle et prédire les résultats lr_model = cv.fit(train) predictions = lr_model.transform(test) 14 - Évaluer le modèle from pyspark.ml.evaluation import BinaryClassificationEvaluator ev = BinaryClassificationEvaluator() ev.evaluate(predictions) lr = LogisticRegression(features- Col=’features’, labelCol=’label’, maxIter) 3  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  13. 13. Concepts clés de Spark ML Transformers Ils implémentent la méthode transform(), qui convertit un DataFrame en un autre, en modifiant une ou plusieurs colonnes. Exemples : Binarizer, IDF, CountVectorizer, FeatureHasher, Imputer, OneHotEncoding, StringIndexer, HashingTF Conversion en Pandas DataFrame Si on a réduit suffisamment la taille du jeu de données, l’entraînement peut se faire via Scikit-learn et TensorFlow. Cela implique que les données soient sur la même machine. On peut alors convertir le Spark DataFrame en Pandas DataFrame. df_pandas = df.toPandas() Estimators ML Pipelines Les objets PySpark pouvant traiter les données des DataFrames sont soit des Transformers, soit des Estimators. Ils implémentent la méthode fit(), qui entraîne un modèle à partir des données d’un DataFrame. Exemples : Classification : Classification LogisticRegression DecisionTreeClassifier GBTClassifier RandomForestClassifier NaiveBayes MultilayerPerceptronClassifier OneVsRest Régression : AFTSurvivalRegression DecisionTreeRegressor GBTRegressor GeneralizedLinearRegression IsotonicRegression LinearRegression RandomForestRegressor Les Transformers et Estimators peuvent être assemblés dans des Pipelines. Ils permettent de réunir plusieurs Transformers et Estimators pour former une séquence d’étapes de transformation. On peut ensuite appeler les méthodes fit() et transform() directement sur le Pipeline. from pyspark.ml import Pipeline etapes = [] transformer = CountVectorizer() # exemple estimator = LogisticRegression() # exemple etapes += [transformer, estimator] pipeline = Pipeline(stages = etapes) modele_pipeline = pipeline.fit(df) nouveau_df = modele_pipeline.transfom(df)  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  14. 14. Qu’est-ce Koalas ? Introduite à la communauté en Avril 2019, cette librairie Python implémente l’API Pandas sur Apache Spark. Pandas est la librairie par excellence utilisée par les Data Scientist pour la manipulation de données. Son API DataFrame, bien que très pratique, n’est pas conçue pour le calcul distribué. Koalas réplique les fonctionnalités du DataFrame de Pandas et permet aux Data Scientists d’utiliser avec Spark une syntaxe qui leur est déjà familière. Koalas : une alternative prometteuse ? Exemples : df = pd.read_csv(“doc.csv”) df.columns = [a, b] df[a2] = df.a * df.a Pandas df = ks.read_csv(“doc.csv”) df.columns = [a, b] df[a2] = df.a * df.a Koalas Créer une nouvelle colonne : df.sort_index Pandas df.sort_index Koalas Trier les observations par les valeurs index : Supprimer une colonne : df.drop(‘Column’, axis = 1) Pandas df.drop(‘Column’, axis = 1) Koalas NOUVEAU KOALA toboggan  A PA CHE SPARK - A PP LI QUÉ À L A DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  15. 15. Qui sommes-nous ? I IT Consulting I THERE IS A BETTER WAY octo.com I blog.octo.com IMPLANTATIONS 7OO 2 PRODUITS COLLABORATEURS 2 CONFÉRENCES FORMATION 5x La conférence tech par OCTO 4 Paris Provence Toulouse Hauts de France OCTO EN TÊTE DU PALMARÈS PLUS DE REMERCIEMENTS Nous souhaitons remercier nos précieux relecteurs, sans l’aide desquels ce projet n’aurait pu aboutir : Marc Alonso, Meriem Berkane, Nicolas Brohée, Ali El Moussaoui, Augustin Grimprel, Bartosz Konieczny, Matthieu Lagacherie, Thomas Vial. Nous remercions également Camille Rocchi, directrice artistique de la publication. En espérant que ce Spark d’attraction aura su démystifier certaines notions liées aux calculs distribués et qu’il vous aidera dans vos projets de Data. Signé, les auteurs principaux : Jennifer Vial, Amric Trudel  A PA CHE SPARK - A PP LI QUÉ À LA DATA SCIENCE  NAD x S@S  OCT O T E CHNOLOGY
  16. 16. WWW.OCTO.COM tribu-nad@octo.com I science.at.scale@octo.com © OCTO Technology 2021 - All rights reserved NOUS CROYONS QUE l'informatique TRANSFORME NOS SOCIÉTÉS NOUS SAVONS QUE LES réalisations marquantes SONT LE FRUIT DU partage DES SAVOIRS ET DU PLAISIR À +RAVAILLER ENSEMBLE NOUS recherchons EN PERMANENCE DE MEILLEURES façons DE FAIRE

×