PySpark-vejledning - Lær Apache Spark ved hjælp af Python



I denne blog på PySpark Tutorial lærer du om PSpark API, der bruges til at arbejde med Apache Spark ved hjælp af Python Programming Language.

I en verden, hvor data genereres i en så alarmerende hastighed, er den korrekte analyse af disse data på det rigtige tidspunkt meget nyttig. En af de mest fantastiske rammer til at håndtere store data i realtid og udføre analyse er Apache Spark.Sammen, eller PySpark er et af de mest efterspurgte certificeringskurser, der giver Scala for Spark et løb for sine penge. Så i dette PySpark vejledning blog, vil jeg diskutere følgende emner:





PySpark Tutorial: Hvad er PySpark?

Apache Spark er en hurtig klyngecomputer-ramme, der bruges til behandling, forespørgsel og analyse af Big data. At være baseret på beregning i hukommelsen har det en fordel i forhold til flere andre store datarammer.

PySpark-funktioner - PySpark-vejledning - Edureka



Oprindeligt skrevet på Scala Programming Language, har open source-samfundet udviklet et fantastisk værktøj til at understøtte Python til Apache Spark. PySpark hjælper dataforskere med at interface med RDD'er i Apache Spark og Python gennem biblioteket Py4j. Der er mange funktioner, der gør PySpark til en bedre ramme end andre:

  • Hastighed: Det er 100 gange hurtigere end traditionelle store databehandlingsrammer
  • Kraftig caching: Enkelt programmeringslag giver kraftige caching og disk persistens kapaciteter
  • Implementering: Kan implementeres gennem Mesos, Hadoop via Garn eller Sparks egen klyngemanager
  • Realtid: Beregning i realtid og lav ventetid på grund af beregning i hukommelsen
  • Polyglot: Understøtter programmering i Scala, Java, Python og R

Lad os gå videre med vores PySpark tutorial-blog og se, hvor Spark bruges i branchen.

PySpark i branchen

Hver branche drejer sig om Big Data, og hvor der er Big Data, er der analyse involveret. Så lad os se på de forskellige brancher, hvor Apache Spark bruges.



Halvt er en af ​​de største brancher, der vokser mod online streaming. Netflix bruger Apache Spark til strømbehandling i realtid for at levere personlige onlineanbefalinger til sine kunder. Det behandler 450 mia begivenheder pr. dag, der flyder til serversiden.

Finansiere er en anden sektor, hvor Apache Sparks realtidsbehandling spiller en vigtig rolle. Banker bruger Spark til at få adgang til og analysere de sociale medieprofiler for at få indsigt, der kan hjælpe dem med at træffe rigtige forretningsbeslutninger til vurdering af kreditrisiko , målrettede annoncer og kundesegmentering. Kunde Churn reduceres også ved hjælp af Spark. Detektering af svig er et af de mest anvendte områder inden for maskinlæring, hvor Spark er involveret.

Sundhedspleje udbydere bruger Apache Spark til Analyser patientjournaler sammen med tidligere kliniske data for at identificere, hvilke patienter der sandsynligvis vil have sundhedsmæssige problemer efter udskrivning fra klinikken. Apache Spark bruges i Genomisk sekventering for at reducere den nødvendige tid til behandling af genomdata.

Detail og e-handel er en branche, hvor man ikke kan forestille sig, at den kører uden brug af analyse og målrettet reklame. En af de største e-handelsplatforme i dag Alibaba kører nogle af de største Spark Jobs i verden for at analysere petabytes af data. Alibaba optræder ekstraktion af funktioner i billeddata. eBay bruger Apache Spark til at levere Målrettede tilbud , forbedre kundeoplevelsen og optimere den samlede præstation.

Rejse Industrier bruger også Apache Spark. TripAdvisor , et førende rejsewebsted, der hjælper brugere med at planlægge en perfekt tur, bruger Apache Spark til at fremskynde sit personlige kundeanbefalinger .TripAdvisor bruger apache-gnist til at rådgive millioner af rejsende af sammenligne hundredvis af hjemmesider for at finde de bedste hotelpriser for sine kunder.

Et vigtigt aspekt af denne PySpark-tutorial er at forstå, hvorfor vi har brug for Python? Hvorfor ikke Java, Scala eller R?

Abonner på vores youtube-kanal for at få nye opdateringer ..!


Hvorfor gå efter Python?

Let at lære: For programmører er Python relativt lettere at lære på grund af sin syntaks og standardbiblioteker. Desuden er det et dynamisk skrevet sprog, hvilket betyder, at RDD'er kan indeholde objekter af flere typer.

Et stort sæt biblioteker: Scala har ikke tilstrækkelige datavidenskabelige værktøjer og biblioteker som Python til maskinindlæring og naturlig sprogbehandling. Desuden mangler Scala god visualisering og lokale datatransformationer.

type konvertering i c ++

Kæmpe fællesskabsstøtte: Python har et globalt samfund med millioner af udviklere, der interagerer online og offline tusindvis af virtuelle og fysiske placeringer.

Et af de vigtigste emner i denne PySpark-tutorial er brugen af ​​RDD'er. Lad os forstå, hvad der er RDD'er

Gnist RDD'er

Når det kommer til iterativ distribueret databehandling, dvs. behandling af data over flere job i beregninger, er vi nødt til at genbruge eller dele data mellem flere job. Tidligere rammer som Hadoop havde problemer med at håndtere flere operationer / job som

  • Lagring af data i mellemlagring såsom HDFS
  • Flere I / O-job gør beregningerne langsomme
  • Replikationer og serialiseringer, som igen gør processen endnu langsommere

RDD'er forsøger at løse alle problemerne ved at aktivere fejltolerante distribuerede hukommelsesberegninger. RDD er en forkortelse for Modstandsdygtige distribuerede datasæt. RDD er en distribueret hukommelsesabstraktion, der lader programmører udføre in-memory-beregninger på store klynger på en fejltolerant måde. De er det skrivebeskyttet samling af objekter opdelt på tværs af et sæt maskiner, der kan genopbygges, hvis en partition går tabt. Der er flere operationer udført på RDD'er:

  • Transformationer: Transformationer opretter et nyt datasæt fra et eksisterende. Lazy Evaluering
  • Handlinger: Spark tvinger kun beregningerne til udførelse, når handlinger påberåbes på RDD'erne

Lad os forstå et par transformationer, handlinger og funktioner

Læsning af en fil og visning af Top n-elementer:

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

Produktion:

[skovrydning opstår som det vigtigste miljømæssige og sociale spørgsmål, som nu har taget form af mere end en magtfuld dæmon. ', u'Vi skal vide om årsagerne, virkningerne og måderne til at løse de problemer, der er opstået på grund af skovrydningen. ', u'Vi har leveret mange afsnit, lange og korte essays om skovrydning for at hjælpe dine børn og børn med at blive opmærksomme på problemet samt deltage i essay skrivekonkurrencen på skolen eller uden for skolen. ', u'Du kan vælge ethvert skovrydningsprojekt, der er angivet nedenfor i henhold til klassestandarden. ', u'Skovrydning opstår som det største globale problem for samfundet og miljøet.']

Konvertering til små bogstaver og opdeling: (Nedre og opdelt)

def Func (linjer): linjer = linjer. lavere () linjer = linjer.split () returlinjer rdd1 = rdd.map (Func) rdd1.take (5)

Produktion:

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

Fjernelse af stopord: (Filter)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'Jeg', 'jeg', 'hvorfor', 'med'] rdd2 = rdd1.filter (lambda z: z ikke i stop_words) rdd2.take (10)

Produktion:

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

Summen af ​​numre fra 1 til 500: (Reducer)

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

Produktion:

124750

Maskinindlæring med PySpark

Fortsætter vores PySpark tutorial blog, lad os analysere nogle BasketBall data og gøre nogle fremtidige forudsigelser. Så her skal vi bruge basketballdata for alle NBA-spillerne siden 1980 [introduktionsår for 3 markører].

Indlæsning af data:

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

Udskrivning af kolonner:

udskriv (df.kolonner)

Produktion:

['_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']

Sortering af spillere (OrderBy) og toPandas:

Her sorterer vi spillere efter point scoret i en sæson.

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

Produktion:

Brug af DSL og matplotlib:

Her analyserer vi det gennemsnitlige antal 3-punkts forsøg for hver sæson i en tidsfrist på 36 min [et interval svarende til et omtrentligt fuldt NBA-spil med tilstrækkelig hvile]. Vi beregner denne metrik ved hjælp af antallet af 3-punkts feltforsøg (fg3a) og spillede minutter (mp) og plotter derefter resultatet ved hjælp af matlplotlib .

fra pyspark.sql.funktioner importerer col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}). vælg (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')). OrderBy ('yr') fra matplotlib import pyplot som plt import søfødt som sns plt.style .brug ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Year') _ = plt.title ('Player average 3-punkts forsøg (pr. 36 minutter) ') plt.annotate (' 3 pointer introduceret ', xy = (1980, .5), xytext = (1981, 1.1), fontstørrelse = 9, arrowprops = dict (facecolor =' grå ', shrink = 0, linewidth = 2)) plt.annotate (' NBA flyttet i 3-punkts linje ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontstørrelse = 9, arrowprops = dict (facecolor) = 'grå', krympning = 0, linjebredde = 2)) plt.annotate ('NBA flyttet tilbage 3-punktslinje', xy = (1998, 2.), xytext = (1998.5, 2.4), skrifttypestørrelse = 9, pileknægt = dict (facecolor = 'grå', krympning = 0, linewidth = 2))

Produktion:

hvad er binær søgning i java

Lineær regression og VectorAssembler:

Vi kan tilpasse en lineær regressionsmodel til denne kurve for at modellere antallet af skudforsøg i de næste 5 år. Vi er nødt til at omdanne vores data ved hjælp af VectorAssembler-funktionen til en enkelt kolonne. Dette er en krav til den lineære regressions-API i MLlib.

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

Produktion:

Bygningsmodel:

Vi bygger derefter vores lineære regressionsmodelobjekt ved hjælp af vores transformerede data.

fra pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (træning)

Anvendelse af trænet model på datasættet:

Vi anvender vores uddannede modelobjektmodel på vores originale træningssæt sammen med 5 års fremtidige data

fra pyspark.sql.types importerer række # anvend model til sæsonen 1979-80 til sæsonen 2020-21 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 # bygget test DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # anvend lineær regressionsmodel df_results = model.transform (all_years_features) .toPandas ()

Planlægning af den endelige forudsigelse:

Vi kan derefter plotte vores resultater og gemme grafen et bestemt sted.

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 = Ingen) plt.xlabel (' Year ') plt.ylabel (' Antal forsøg ') plt.legend (loc = 4) _ = plt.title (' Player gennemsnit 3-punkts forsøg (pr. 36 minutter) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Produktion:

Og med denne graf kommer vi til slutningen af ​​denne PySpark Tutorial Blog.

Så dette er det, gutter!

Jeg håber, I har fået en idé om, hvad PySpark er, hvorfor Python er bedst egnet til Spark, RDD'erne og et glimt af Machine Learning med Pyspark i denne PySpark Tutorial Blog. Tillykke, du er ikke længere nybegynder i PySpark. Hvis du vil lære mere om PySpark og forstå de forskellige sager inden for industribrug, skal du kigge på vores Gnist med Python Blog.

Nu hvor du har forstået Hvad er Pyspark, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edureka's Python Spark-certificeringstræning ved hjælp af PySpark er designet til at give dig den viden og de færdigheder, der kræves for at blive en succesrig Spark Developer ved hjælp af Python og forberede dig til Cloudera Hadoop og Spark Developer Certification Exam (CCA175).