PySpark-zelfstudie - Leer Apache Spark met Python



In deze blog over PySpark-zelfstudie leert u over PSpark API die wordt gebruikt om met Apache Spark te werken met behulp van Python-programmeertaal.

In een wereld waar data met zo'n alarmerend tempo worden gegenereerd, is de juiste analyse van die data op het juiste moment erg handig. Een van de meest verbazingwekkende frameworks om big data in realtime te verwerken en analyses uit te voeren, is Apache Spark.Samen, of PySpark is een van de meest gewilde certificeringscursussen, waardoor Scala for Spark zijn geld krijgt. Dus hierin PySpark-zelfstudie blog bespreek ik de volgende onderwerpen:





PySpark-zelfstudie: wat is PySpark?

Apache Spark is een snel framework voor clustercomputing dat wordt gebruikt voor het verwerken, opvragen en analyseren van big data. Omdat het is gebaseerd op in-memory-berekeningen, heeft het een voordeel ten opzichte van verschillende andere big data-frameworks.

PySpark-functies - PySpark-zelfstudie - Edureka



Oorspronkelijk geschreven in Scala Programming Language, heeft de open source-gemeenschap een geweldige tool ontwikkeld om Python voor Apache Spark te ondersteunen. PySpark helpt datawetenschappers via de bibliotheek met RDD's in Apache Spark en Python te communiceren Py4j. Er zijn veel functies die PySpark een beter framework maken dan andere:

  • Snelheid: Het is 100x sneller dan traditionele grootschalige frameworks voor gegevensverwerking
  • Krachtige caching: Eenvoudige programmeerlaag biedt krachtige mogelijkheden voor caching en schijfpersistentie
  • Inzet: Kan worden geïmplementeerd via Mesos, Hadoop via Yarn of Spark's eigen clustermanager
  • Echte tijd: Realtime berekening en lage latentie dankzij berekeningen in het geheugen
  • Polyglot: Ondersteunt programmeren in Scala, Java, Python en R

Laten we verder gaan met onze PySpark Tutorial Blog en kijken waar Spark in de branche wordt gebruikt.

PySpark in de industrie

Elke branche draait om big data en waar big data is, is analyse betrokken. Laten we dus eens kijken naar de verschillende branches waar Apache Spark wordt gebruikt.



Voor de helft is een van de grootste industrieën die groeit naar online streaming. Netflix gebruikt Apache Spark voor realtime streamverwerking om gepersonaliseerde online aanbevelingen aan zijn klanten te bieden. Het verwerkt 450 miljard gebeurtenissen per dag die naar server-side applicaties stromen.

Financiën is een andere sector waarin de real-time verwerking van Apache Spark een belangrijke rol speelt. Banken gebruiken Spark om toegang te krijgen tot de socialemediaprofielen en deze te analyseren om inzichten te krijgen die hen kunnen helpen de juiste zakelijke beslissingen te nemen kredietrisicobeoordeling , gerichte advertenties en klantsegmentatie. Klantverloop wordt ook verminderd met behulp van Spark. Fraude detectie is een van de meest gebruikte gebieden van Machine Learning waarbij Spark betrokken is.

Gezondheidszorg providers gebruiken Apache Spark om Analyseer patiëntendossiers samen met klinische gegevens uit het verleden om te bepalen welke patiënten waarschijnlijk gezondheidsproblemen zullen krijgen nadat ze uit de kliniek zijn ontslagen. Apache Spark wordt gebruikt in Genomische sequentiebepaling om de tijd die nodig is om genoomgegevens te verwerken, te verminderen.

Detailhandel en e-commerce is een branche waarin men zich niet kan voorstellen dat deze draait zonder het gebruik van analyse en gerichte advertenties. Een van de grootste e-commerceplatforms van dit moment Alibaba runt enkele van de grootste Spark Jobs ter wereld om petabytes aan gegevens te analyseren. Alibaba treedt op functie-extractie in beeldgegevens. eBay gebruikt Apache Spark om Gerichte aanbiedingen , de klantervaring verbeteren en de algehele prestaties optimaliseren.

Reizen Industrieën gebruiken ook Apache Spark. TripAdvisor , een toonaangevende reiswebsite die gebruikers helpt bij het plannen van een perfecte reis, gebruikt Apache Spark om zijn gepersonaliseerde klantaanbevelingen .TripAdvisor gebruikt apache spark om advies te geven aan miljoenen reizigers door honderden websites vergelijken om de beste hotelprijzen voor haar klanten te vinden.

Een belangrijk aspect van deze PySpark-zelfstudie is om te begrijpen waarom we voor Python moeten gaan? Waarom niet Java, Scala of R?

Abonneer je op ons YouTube-kanaal om nieuwe updates te ontvangen ..!


leg mvc-architectuur in java uit met een voorbeeld

Waarom kiezen voor Python?

Makkelijk te leren: Voor programmeurs is Python relatief gemakkelijker te leren vanwege de syntaxis en standaardbibliotheken. Bovendien is het een dynamisch getypeerde taal, wat betekent dat RDD's objecten van meerdere typen kunnen bevatten.

Een uitgebreide reeks bibliotheken: Scala heeft niet voldoende data science-tools en bibliotheken zoals Python voor machine learning en natuurlijke taalverwerking. Bovendien mist Scala goede visualisatie en lokale datatransformaties.

Enorme ondersteuning van de gemeenschap: Python heeft een wereldwijde community met miljoenen ontwikkelaars die online en offline communiceren op duizenden virtuele en fysieke locaties.

Een van de belangrijkste onderwerpen in deze PySpark-zelfstudie is het gebruik van RDD's. Laten we eens kijken wat RDD's zijn

Spark RDD's

Als het gaat om iteratief gedistribueerd computergebruik, d.w.z. het verwerken van gegevens over meerdere taken in berekeningen, moeten we gegevens hergebruiken of delen tussen meerdere taken. Eerdere frameworks zoals Hadoop hadden problemen bij het omgaan met meerdere bewerkingen / taken zoals

  • Gegevens opslaan in tussentijdse opslag, zoals HDFS
  • Meerdere I / O-taken maken de berekeningen traag
  • Replicaties en serialisaties die op hun beurt het proces nog langzamer maken

RDD's proberen alle problemen op te lossen door fouttolerante gedistribueerde berekeningen in het geheugen mogelijk te maken. RDD is de afkorting van Veerkrachtige gedistribueerde datasets. RDD is een gedistribueerde geheugen-abstractie waarmee programmeurs in-memory berekeningen kunnen uitvoeren op grote clusters op een fouttolerante manier. Zij zijn de alleen-lezen verzameling objecten gepartitioneerd over een reeks machines die opnieuw kunnen worden opgebouwd als een partitie verloren gaat. Er worden verschillende bewerkingen uitgevoerd op RDD's:

  • Transformaties: Transformaties creëren een nieuwe dataset op basis van een bestaande. Luie evaluatie
  • Acties: Spark forceert de berekeningen alleen voor uitvoering wanneer acties worden aangeroepen op de RDD's

Laten we een paar transformaties, acties en functies bekijken

Een bestand lezen en Top n-elementen weergeven:

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

Uitgang:

[u'Ontbossing doet zich voor als de belangrijkste ecologische en sociale kwestie die nu de vorm heeft aangenomen van meer dan een krachtige demon. ', u'We moeten weten wat de oorzaken, gevolgen en manieren zijn om de problemen op te lossen die zijn ontstaan ​​door de ontbossing. ', u'We hebben veel alinea's en een lang en kort essay over ontbossing verstrekt om uw kinderen en kinderen te helpen zich bewust te worden van het probleem en om deel te nemen aan de opstelwedstrijd op school of buiten de school. ', u'Je kunt elk ontbossingsessay hieronder selecteren volgens de klassennorm. ', u'Ontbossing doet zich voor als het grootste mondiale probleem voor de samenleving en het milieu.']

Converteren naar kleine letters en splitsen: (lager en gesplitst)

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

Uitgang:

[[u'deforestation ', u'is', u'arising ', u'as', u'he ', u'main', u'environmental ', u'en', u'social ', u'issue ', u'which', u'has ', u'now', u'taken ', ...... . . ]

StopWords verwijderen: (Filter)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'Ik', 'ik', 'waarom', 'met'] rdd2 = rdd1.filter (lambda z: z niet in stop_words) rdd2.take (10)

Uitgang:

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

Som van getallen van 1 tot 500: (verkleinen)

sum_rdd = sc.parallelize (bereik (1.500)) sum_rdd.reduce (lambda x, y: x + y)

Uitvoer:

124750

Machine learning met PySpark

Laten we verder gaan met onze PySpark-zelfstudieblog, laten we wat BasketBall-gegevens analyseren en wat toekomstige voorspellingen doen. Dus hier gaan we de basketbalgegevens van alle spelers van de NBA sindsdien gebruiken 1980 [jaar van introductie van 3 Pointers].

Gegevens laden:

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

Kolommen afdrukken:

print (df.columns)

Uitgang:

['_c0', 'speler', 'pos', 'leeftijd', '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']

Spelers sorteren (OrderBy) en toPandas:

Hier sorteren we spelers op basis van gescoorde punten in een seizoen.

df.orderBy ('pts', ascending = False) .limit (10) .toPandas () [['jr', 'speler', 'leeftijd', 'pts', 'fg3']]

Uitgang:

DSL en matplotlib gebruiken:

Hier analyseren we het gemiddelde aantal 3-punts pogingen voor elk seizoen in een tijdslimiet van 36 min [een interval dat overeenkomt met een geschatte volledige NBA-wedstrijd met voldoende rust]. We berekenen deze statistiek met behulp van het aantal 3-punts velddoelpogingen (fg3a) en gespeelde minuten (mp) en plotten vervolgens het resultaat met matlplotlib .

van pyspark.sql.functions import col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}) .select (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')). OrderBy ('yr') uit matplotlib importeer pyplot als plt import seaborn als sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Jaar') _ = plt.title ('Speler gemiddelde 3-punts pogingen (per 36 minuten) ') plt.annotate (' 3 pointer geïntroduceerd ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' grey ', shrink = 0, linewidth = 2)) plt.annotate (' NBA verplaatst in 3-punts lijn ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'grey', shrink = 0, linewidth = 2)) plt.annotate ('NBA verplaatst driepuntslijn terug', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dict (facecolor = 'grey', shrink = 0, linewidth = 2))

Uitgang:

Lineaire regressie en vectorassembler:

We kunnen een lineair regressiemodel aan deze curve aanpassen om het aantal schotpogingen voor de komende 5 jaar te modelleren. We moeten onze gegevens met behulp van de VectorAssembler-functie naar een enkele kolom transformeren. Dit is een vereiste voor de lineaire regressie-API in MLlib.

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

Uitgang:

Gebouwmodel:

Vervolgens bouwen we ons lineaire regressiemodelobject met behulp van onze getransformeerde gegevens.

van pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (training)

Opgeleid model toepassen op dataset:

We passen ons getrainde modelobjectmodel toe op onze originele trainingsset, samen met 5 jaar aan toekomstige gegevens

van pyspark.sql.types import Rij # pas model toe voor het seizoen 1979-80 tot en met seizoen 2020-21 training_yrs = training.select ('jr'). 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 + predictiction_yrs # gebouwd testen DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (rij) .toDF ()) # pas lineair regressiemodel toe df_results = model.transform (all_years_features) .toPandas ()

De uiteindelijke voorspelling uitzetten:

We kunnen dan onze resultaten plotten en de grafiek op een bepaalde locatie opslaan.

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 = Geen) plt.xlabel (' Jaar ') plt.ylabel (' Aantal pogingen ') plt.legend (loc = 4) _ = plt.title (' Speler gemiddeld 3-puntspogingen (per 36 minuten) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Afbeeldingen / REGRESSION.png ')

Uitgang:

En met deze grafiek komen we aan het einde van deze PySpark Tutorial Blog.

Dus dit is het, jongens!

Ik hoop dat jullie een idee hebben gekregen van wat PySpark is, waarom Python het meest geschikt is voor Spark, de RDD's en een glimp van Machine Learning met Pyspark in deze PySpark Tutorial Blog. Gefeliciteerd, je bent niet langer een Newbie bij PySpark. Als je meer wilt weten over PySpark en de verschillende gebruiksscenario's in de industrie wilt begrijpen, bekijk dan onze Vonk met Python Blog.

verschil tussen c c ++ en java

Nu je hebt begrepen wat Pyspark is, kun je het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. Edureka's Python Spark-certificeringstraining met PySpark is ontworpen om u de kennis en vaardigheden te bieden die nodig zijn om een ​​succesvolle Spark Developer te worden die Python gebruikt en om u voor te bereiden op het Cloudera Hadoop en Spark Developer Certification Exam (CCA175).