Tutoriel PySpark - Apprenez à Apache Spark à l'aide de Python



Dans ce blog sur le didacticiel PySpark, vous découvrirez l'API PSpark qui est utilisée pour travailler avec Apache Spark à l'aide du langage de programmation Python.

Dans un monde où les données sont générées à un rythme aussi alarmant, l'analyse correcte de ces données au bon moment est très utile. L'un des frameworks les plus étonnants pour gérer le Big Data en temps réel et effectuer des analyses est Apache Spark.Ensemble, ou PySpark est l'un des cours de certification les plus recherchés, donnant à Scala for Spark une course pour son argent. Donc dans ce Tutoriel PySpark blog, j'aborderai les sujets suivants:





Tutoriel PySpark: Qu'est-ce que PySpark?

Apache Spark est un framework de calcul de cluster rapide utilisé pour le traitement, l'interrogation et l'analyse de Big Data. Étant basé sur le calcul en mémoire, il présente un avantage par rapport à plusieurs autres frameworks Big Data.

Fonctionnalités PySpark - Tutoriel PySpark - Edureka



Initialement écrit en langage de programmation Scala, la communauté open source a développé un outil incroyable pour prendre en charge Python pour Apache Spark. PySpark aide les data scientists à s'interfacer avec les RDD dans Apache Spark et Python via sa bibliothèque Py4j. De nombreuses fonctionnalités font de PySpark un meilleur framework que d'autres:

  • La vitesse: Il est 100 fois plus rapide que les cadres de traitement de données traditionnels à grande échelle
  • Mise en cache puissante: La couche de programmation simple offre de puissantes capacités de mise en cache et de persistance du disque
  • Déploiement: Peut être déployé via Mesos, Hadoop via Yarn ou le propre gestionnaire de cluster de Spark
  • Temps réel: Calcul en temps réel et faible latence grâce au calcul en mémoire
  • Polyglotte: Prend en charge la programmation en Scala, Java, Python et R

Allons de l'avant avec notre blog didacticiel PySpark et voyons où Spark est utilisé dans l'industrie.

PySpark dans l'industrie

Chaque industrie tourne autour du Big Data et des domaines où l'analyse du Big Data est impliquée. Jetons donc un œil aux différents secteurs dans lesquels Apache Spark est utilisé.



Moitié est l'une des plus grandes industries à se développer vers le streaming en ligne. Netflix utilise Apache Spark pour le traitement de flux en temps réel afin de fournir des recommandations en ligne personnalisées à ses clients. Il traite 450 milliards événements par jour qui se dirigent vers les applications côté serveur.

La finance est un autre secteur dans lequel le traitement en temps réel d'Apache Spark joue un rôle important. Les banques utilisent Spark pour accéder et analyser les profils de médias sociaux, afin d'obtenir des informations qui peuvent les aider à prendre les bonnes décisions commerciales pour évaluation du risque de crédit , annonces ciblées et segmentation client. Churn client est également réduit avec Spark. Détection de fraude est l'un des domaines les plus utilisés du Machine Learning où Spark est impliqué.

Soins de santé les fournisseurs utilisent Apache Spark pour Analyser les dossiers des patients ainsi que des données cliniques antérieures pour identifier les patients susceptibles de rencontrer des problèmes de santé après leur sortie de la clinique. Apache Spark est utilisé dans Séquençage génomique pour réduire le temps nécessaire au traitement des données génomiques.

Commerce de détail et e-commerce est une industrie où l'on ne peut pas l'imaginer fonctionner sans l'utilisation de l'analyse et de la publicité ciblée. L'une des plus grandes plateformes de commerce électronique aujourd'hui Alibaba exécute certains des plus grands travaux Spark au monde afin d'analyser des pétaoctets de données. Alibaba joue extraction de caractéristiques dans les données d'image. eBay utilise Apache Spark pour fournir Offres ciblées , améliorez l'expérience client et optimisez les performances globales.

Voyage Les industries utilisent également Apache Spark. TripAdvisor , un site Web de voyage de premier plan qui aide les utilisateurs à planifier un voyage parfait utilise Apache Spark pour accélérer ses recommandations client personnalisées .TripAdvisor utilise Apache Spark pour conseiller des millions de voyageurs en comparer des centaines de sites Web pour trouver les meilleurs prix d'hôtel pour ses clients.

Un aspect important de ce didacticiel PySpark est de comprendre pourquoi nous devons opter pour Python? Pourquoi pas Java, Scala ou R?

Abonnez-vous à notre chaîne YouTube pour obtenir de nouvelles mises à jour ..!


comment imprimer un tableau php

Pourquoi opter pour Python?

Facile à apprendre: Pour les programmeurs, Python est comparativement plus facile à apprendre en raison de sa syntaxe et de ses bibliothèques standard. De plus, il s’agit d’un langage à typage dynamique, ce qui signifie que les RDD peuvent contenir des objets de plusieurs types.

Un vaste ensemble de bibliothèques: Scala ne dispose pas de suffisamment d'outils de science des données et de bibliothèques comme Python pour l'apprentissage automatique et le traitement du langage naturel. De plus, Scala manque d'une bonne visualisation et de transformations de données locales.

Énorme soutien communautaire: Python a une communauté mondiale avec des millions de développeurs qui interagissent en ligne et hors ligne dans des milliers d'emplacements virtuels et physiques.

L'un des sujets les plus importants de ce didacticiel PySpark est l'utilisation des RDD. Voyons ce que sont les RDD

RDD Spark

En ce qui concerne l'informatique distribuée itérative, c'est-à-dire le traitement de données sur plusieurs tâches dans les calculs, nous devons réutiliser ou partager des données entre plusieurs tâches. Les frameworks antérieurs comme Hadoop avaient des problèmes lors de la gestion de plusieurs opérations / travaux comme

  • Stockage des données dans un stockage intermédiaire tel que HDFS
  • Plusieurs tâches d'E / S ralentissent les calculs
  • Réplications et sérialisations, ce qui ralentit encore davantage le processus

Les RDD tentent de résoudre tous les problèmes en activant des calculs en mémoire distribués tolérants aux pannes. RDD est l'abréviation de Ensembles de données distribués résilients. RDD est une abstraction de mémoire distribuée qui permet aux programmeurs d'effectuer des calculs en mémoire sur de grands clusters d'une manière tolérante aux pannes. Ils sont les collection d'objets en lecture seule partitionné sur un ensemble de machines pouvant être reconstruit si une partition est perdue. Plusieurs opérations sont effectuées sur les RDD:

  • Transformations: Les transformations créent un nouvel ensemble de données à partir d'un ensemble existant. Évaluation paresseuse
  • Actions: Spark force les calculs pour l'exécution uniquement lorsque des actions sont appelées sur les RDD

Voyons quelques transformations, actions et fonctions

Lecture d'un fichier et affichage des n premiers éléments:

rdd = sc.textFile ('fichier: /// home / edureka / Desktop / Sample') rdd.take (n)

Production:

[u'Deforestation apparaît comme le principal problème environnemental et social qui a maintenant pris la forme de plus qu'un puissant démon. ', u'Nous devons connaître les causes, les effets et les moyens de résoudre les problèmes liés à la déforestation. ', u'Nous avons fourni de nombreux paragraphes, un essai long et court sur la déforestation afin d'aider vos enfants à prendre conscience du problème et à participer au concours de rédaction d'essais à l'école ou en dehors de l'école. ', u'Vous pouvez sélectionner n'importe quel essai sur la déforestation ci-dessous selon le standard de la classe. ', u' La déforestation est en train de devenir le problème mondial majeur pour la société et l'environnement. ']

Conversion en minuscules et fractionnement: (inférieur et fractionné)

def Func (lines): lines = lines.lower () lines = lines.split () return lines rdd1 = rdd.map (Func) rdd1.take (5)

Production:

[[u'deforestation ', u'est', u'arising ', u'as', u'the ', u'main', u'environmental ', u'and', u'social ', u'issue ', u'which', u'has ', u'now', u'taken ', ...... . . ]

Suppression des mots d'arrêt: (Filtre)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'Je', 'je', 'pourquoi', 'avec'] rdd2 = rdd1.filter (lambda z: z pas dans stop_words) rdd2.take (10)

Production:

[u'deforestation ', u'arising', u'main ', u'environmental', u'social ', u'issue', u'which ', u'has', u'now ', u'taken' ]

Somme des nombres de 1 à 500: (Réduire)

sum_rdd = sc.parallelize (plage (1,500)) sum_rdd.reduce (lambda x, y: x + y)

Production:

124750

Apprentissage automatique avec PySpark

Poursuivant notre blog didacticiel PySpark, analysons quelques données de BasketBall et faisons de futures prédictions. Donc, ici, nous allons utiliser les données de basketball de tous les joueurs de la NBA depuis 1980 [année d'introduction de 3 pointeurs].

Chargement des données:

df = spark.read.option ('header', 'true') .option ('inferSchema', 'true') .csv ('file: ///home/edureka/Downloads/season_totals.csv')

Colonnes d'impression:

imprimer (df.colonnes)

Production:

['_c0', 'player', 'pos', 'age', 'team_id', 'g', 'gs', 'mp', 'fg', 'fga', 'fg_pct', 'fg3', ' fg3a ',' fg3_pct ',' fg2 ',' fg2a ',' fg2_pct ',' efg_pct ',' ft ',' fta ',' ft_pct ',' orb ',' drb ',' trb ',' ast ' , 'stl', 'blk', 'tov', 'pf', 'pts', 'yr']

Trier les joueurs (OrderBy) et toPandas:

qu'est-ce que le mélange de données dans un tableau

Ici, nous trions les joueurs en fonction des points marqués au cours d'une saison.

df.orderBy ('pts', ascending = False) .limit (10) .toPandas () [['an', 'player', 'age', 'pts', 'fg3']]

Production:

Utilisation de DSL et matplotlib:

Ici, nous analysons le nombre moyen de Tentatives en 3 points pour chaque saison dans un délai de 36 min [un intervalle correspondant à un match NBA complet approximatif avec un repos adéquat]. Nous calculons cette métrique en utilisant le nombre de tentatives de but sur le terrain à 3 points (fg3a) et les minutes jouées (mp), puis nous traçons le résultat en utilisant matlplotlib .

de pyspark.sql.functions import col fga_py = df.groupBy ('an') .agg ({'mp': 'somme', 'fg3a': 'somme'}) .select (col ('an'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')) .orderBy ('yr') de matplotlib import pyplot as plt import seaborn as sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Year') _ = plt.title ('Moyenne du joueur Tentatives en 3 points (toutes les 36 minutes) ') plt.annotate (' 3 pointeurs introduits ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' gray ', shrink = 0, linewidth = 2)) plt.annotate (' NBA déplacé sur une ligne à 3 points ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'gray', shrink = 0, linewidth = 2)) plt.annotate ('NBA a reculé la ligne de 3 points', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dict (facecolor = 'gray', shrink = 0, linewidth = 2))

Production:

Régression linéaire et assembleur de vecteurs:

Nous pouvons adapter un modèle de régression linéaire à cette courbe pour modéliser le nombre de tentatives de tir pour les 5 prochaines années. Nous devons transformer nos données en utilisant la fonction VectorAssembler en une seule colonne. C'est un exigence pour l'API de régression linéaire dans MLlib.

depuis pyspark.ml.feature import VectorAssembler t = VectorAssembler (inputCols = ['an'], outputCol = 'features') training = t.transform (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) training.toPandas (). head ()

Production:

Modèle de bâtiment:

algorithme de tri par fusion c ++

Nous construisons ensuite notre objet de modèle de régression linéaire en utilisant nos données transformées.

de pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (formation)

Application du modèle entraîné à l'ensemble de données:

Nous appliquons notre modèle d'objet modèle formé à notre ensemble de formation d'origine avec 5 ans de données futures

from pyspark.sql.types import Row # apply model pour la saison 1979-80 à la saison 2020-2021 training_yrs = training.select ('yr'). rdd.map (lambda x: x [0]). collect () training_y = training.select ('fg3a_p36m'). rdd.map (lambda x: x [0]). collect () prediction_yrs = [2017, 2018, 2019, 2020, 2021] all_yrs = training_yrs + prediction_yrs # built testing DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # applique le modèle de régression linéaire df_results = model.transform (all_years_features) .toPandas ()

Tracer la prédiction finale:

Nous pouvons ensuite tracer nos résultats et enregistrer le graphique à un emplacement spécifié.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', label = None) plt.xlabel (' Year ') plt.ylabel (' Nombre de tentatives ') plt.legend (loc = 4) _ = plt.title (' Tentatives moyennes du joueur à 3 points (par 36 minutes) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Production:

Et avec ce graphique, nous arrivons à la fin de ce blog didacticiel PySpark.

Alors ça y est, les gars!

J'espère que vous avez une idée de ce qu'est PySpark, pourquoi Python est le mieux adapté pour Spark, les RDD et un aperçu de l'apprentissage automatique avec Pyspark dans ce blog didacticiel PySpark. Félicitations, vous n'êtes plus un débutant à PySpark. Si vous souhaitez en savoir plus sur PySpark et comprendre les différents cas d'utilisation de l'industrie, consultez notre Spark avec Python Blog.

Maintenant que vous avez compris Qu'est-ce que Pyspark, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Edureka Formation à la certification Python Spark à l'aide de PySpark est conçu pour vous fournir les connaissances et les compétences nécessaires pour devenir un développeur Spark réussi à l'aide de Python et vous préparer à l'examen de certification Cloudera Hadoop et Spark Developer (CCA175).