PySpark Tutorial - Lär dig Apache Spark med Python



I den här bloggen på PySpark Tutorial får du lära dig mer om PSpark API som används för att arbeta med Apache Spark med Python Programming Language.

I en värld där data genereras i en så alarmerande takt är den korrekta analysen av dessa data vid rätt tidpunkt mycket användbar. En av de mest fantastiska ramarna för att hantera stora data i realtid och utföra analys är Apache Spark.Tillsammans, eller PySpark är en av de mest eftertraktade certifieringskurserna, vilket ger Scala för Spark en löpning för sina pengar. Så i det här PySpark-handledning blogg diskuterar jag följande ämnen:





PySpark-handledning: Vad är PySpark?

Apache Spark är ett snabbt cluster computing-ramverk som används för att bearbeta, fråga och analysera Big data. Baserat på beräkning i minnet har den en fördel jämfört med flera andra stora dataramverk.

PySpark-funktioner - PySpark-handledning - Edureka



Ursprungligen skrivet på Scala Programming Language, har open source-communityn utvecklat ett fantastiskt verktyg för att stödja Python för Apache Spark. PySpark hjälper dataforskare att ansluta till RDD i Apache Spark och Python genom sitt bibliotek Py4j. Det finns många funktioner som gör PySpark till ett bättre ramverk än andra:

  • Hastighet: Det är 100 gånger snabbare än traditionella ramar för databehandling i stor skala
  • Kraftfull caching: Enkelt programmeringslager ger kraftfull cachning och diskhållfasthetsfunktioner
  • Spridning: Kan distribueras via Mesos, Hadoop via Garn eller Sparks egen klusterhanterare
  • Realtid: Realtidsberäkning och låg latens på grund av beräkning i minnet
  • Flerspråkig: Stöder programmering i Scala, Java, Python och R

Låt oss gå vidare med vår PySpark Tutorial-blogg och se var Spark används i branschen.

PySpark i branschen

Varje bransch kretsar kring Big Data och där det finns Big Data finns analys involverad. Så låt oss ta en titt på de olika branscherna där Apache Spark används.



Halv är en av de största branscher som växer mot online-streaming. Netflix använder Apache Spark för strömbehandling i realtid för att ge personliga online-rekommendationer till sina kunder. Det bearbetar 450 miljarder händelser per dag som flyter till applikationer på serversidan.

Finansiera är en annan sektor där Apache Sparks realtidsbehandling spelar en viktig roll. Banker använder Spark för att komma åt och analysera sociala medieprofiler för att få insikter som kan hjälpa dem att fatta rätt affärsbeslut för kreditriskbedömning , riktade annonser och kundsegmentering. Kund Churn reduceras också med Spark. Spårning av bedrägerier är ett av de mest använda områdena för maskininlärning där Spark är inblandat.

Sjukvård leverantörer använder Apache Spark till Analysera patientjournaler tillsammans med tidigare kliniska data för att identifiera vilka patienter som sannolikt kommer att möta hälsoproblem efter utskrivning från kliniken. Apache Spark används i Genomisk sekvensering för att minska tiden som krävs för att bearbeta genomdata.

Detaljhandel och e-handel är en bransch där man inte kan föreställa sig att den körs utan användning av analys och riktad reklam. En av de största e-handelsplattformarna idag Alibaba driver några av de största Spark Jobs i världen för att analysera petabytes med data. Alibaba uppträder särdragsextraktion i bilddata. eBay använder Apache Spark för att tillhandahålla Riktade erbjudanden , förbättra kundupplevelsen och optimera den totala prestandan.

Resa Industrier använder också Apache Spark. TripAdvisor , en ledande resewebbplats som hjälper användare att planera en perfekt resa använder Apache Spark för att påskynda dess personliga kundrekommendationer .TripAdvisor använder apache-gnista för att ge råd till miljoner resenärer av jämför hundratals webbplatser för att hitta de bästa hotellpriserna för sina kunder.

En viktig aspekt av denna PySpark-handledning är att förstå varför vi behöver gå till Python? Varför inte Java, Scala eller R?

Prenumerera på vår youtube-kanal för att få nya uppdateringar ..!


Varför gå till Python?

Lätt att lära: För programmerare är Python relativt lättare att lära sig på grund av sin syntax och standardbibliotek. Dessutom är det ett dynamiskt skrivet språk, vilket innebär att RDD kan innehålla objekt av flera typer.

En stor uppsättning bibliotek: Scala har inte tillräckligt med datavetenskapliga verktyg och bibliotek som Python för maskininlärning och bearbetning av naturligt språk. Dessutom saknar Scala bra visualisering och lokala datatransformationer.

Stort gemenskapsstöd: Python har en global gemenskap med miljontals utvecklare som interagerar online och offline på tusentals virtuella och fysiska platser.

Ett av de viktigaste ämnena i denna PySpark-handledning är användningen av RDD. Låt oss förstå vad som är RDD

Gnista RDD

När det gäller iterativ distribuerad databehandling, dvs. bearbetning av data över flera jobb i beräkningar, måste vi återanvända eller dela data mellan flera jobb. Tidigare ramar som Hadoop hade problem med att hantera flera operationer / jobb som

  • Lagring av data i mellanlagring som HDFS
  • Flera I / O-jobb gör beräkningarna långsamma
  • Replikationer och serier som i sin tur gör processen ännu långsammare

RDD försöker lösa alla problem genom att möjliggöra feltoleranta distribuerade minnesberäkningar. RDD är en förkortning för Fjädrande distribuerade datamängder. RDD är en distribuerad minnesabstraktion som låter programmerare utföra beräkningar i minnet på stora kluster på ett feltolerant sätt. De är de skrivskyddad samling av objekt partitionerat över en uppsättning maskiner som kan byggas om om en partition går förlorad. Det finns flera operationer som utförs på RDD: er:

  • Transformationer: Transformationer skapar en ny dataset från en befintlig. Lat utvärdering
  • Åtgärder: Spark tvingar beräkningarna för körning endast när åtgärder anropas på RDD

Låt oss förstå några transformationer, åtgärder och funktioner

Läsa en fil och visa Top n-element:

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

Produktion:

[u'Avskogning uppstår som den viktigaste miljö- och sociala frågan som nu har tagit form av mer än en kraftfull demon. ', u'Vi måste veta om orsakerna, effekterna och sätten att lösa de problem som uppstod på grund av avskogningen. ', u'Vi har tillhandahållit många stycken, långa och korta uppsatser om avskogning för att hjälpa dina barn och barn att bli medvetna om problemet samt delta i uppsatsskrivningstävlingen i skolan eller utanför skolan. ', u'Du kan välja vilken avskogningsuppsats som anges nedan enligt klassstandarden. ', u'Avskogning uppstår som det största globala problemet för samhället och miljön.']

Konvertera till gemener och Splitting: (Lower and Split)

def Func (linjer): linjer = linjer. lägre () 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 ', ...... . . ]

Ta bort stoppord: (Filter)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'Jag', 'jag', 'varför', 'med'] rdd2 = rdd1.filter (lambda z: z inte i stoppord) rdd2.take (10)

Produktion:

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

Summan av siffror från 1 till 500: (Minska)

sum_rdd = sc.parallelize (intervall (1500)) sum_rdd.reduce (lambda x, y: x + y)

Produktion:

124750

Maskininlärning med PySpark

Fortsätt vår PySpark-handledning blogg, låt oss analysera några BasketBall-data och göra framtida förutsägelse. Så här ska vi använda basketdata från alla spelare i NBA sedan 1980 [introduktionsår för 3 pekare].

Data laddas:

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

Utskrift av kolumner:

skriva ut (df. kolumner)

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

Sortera spelare (OrderBy) och toPandas:

Här sorterar vi spelare baserat på poäng på en säsong.

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

Produktion:

Använda DSL och matplotlib:

Här analyserar vi det genomsnittliga antalet 3-punktsförsök för varje säsong inom en tidsgräns på 36 min [ett intervall motsvarande ett ungefärligt fullständigt NBA-spel med tillräcklig vila]. Vi beräknar detta mått med hjälp av antalet trepunktsfältmålförsök (fg3a) och spelade minuter (mp) och plottar sedan resultatet med matlplotlib .

från pyspark.sql.funktioner importerar kol fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}). välj (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')) .orderBy ('yr') från matplotlib importera pyplot som plt importera seaborn som sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Year') _ = plt.title ('Player average 3-punktsförsök (per 36 minuter) ') plt.annotate (' 3-pekare introducerad ', xy = (1980, .5), xytext = (1981, 1.1), fontstorlek = 9, arrowprops = dict (facecolor =' grå ', krympning = 0, linjebredd = 2)) plt.annotate (' NBA flyttad i 3-punktsrad ', xy = (1996, 2.4), xytext = (1991.5, 2.7), teckensnittstorlek = 9, arrowprops = dict (facecolor) = 'grå', krympning = 0, linjebredd = 2)) plt.annotate ('NBA flyttade tillbaka 3-punktsrad', xy = (1998, 2.), xytext = (1998.5, 2.4), typstorlek = 9, pilknappar = dict (ansiktsfärg = 'grå', krympning = 0, linjebredd = 2))

Produktion:

Linjär regression och VectorAssembler:

Vi kan anpassa en linjär regressionsmodell till denna kurva för att modellera antalet skottförsök de närmaste 5 åren. Vi måste omvandla våra data med funktionen VectorAssembler till en enda kolumn. Det här är en krav för linjärt regressions-API i MLlib.

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

Produktion:

Byggnadsmodell:

Vi bygger sedan vårt linjära regressionsmodellobjekt med hjälp av vår transformerade data.

från pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) modell = lr.fit (träning)

Tillämpa utbildad modell på datamängden:

Vi tillämpar vår utbildade modellobjektmodell på vår ursprungliga utbildningsuppsättning tillsammans med 5 års framtida data

c ++ virtuell funktion = 0
från pyspark.sql.types import Rad # tillämpa modell för säsongen 1979-80 till säsongen 2020-21 training_yrs = training.select ('yr'). rdd.map (lambda x: x [0]). samla () 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 ()) # applicera linjär regressionsmodell df_results = model.transform (all_years_features) .toPandas ()

Planera den slutliga förutsägelsen:

Vi kan sedan plotta våra resultat och spara grafen på en viss plats.

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 (' Antal försök ') plt.legend (loc = 4) _ = plt.title (' Player genomsnitt 3-punktsförsök (per 36 minuter) ') plt.tight_layout () plt.savefig (' / home / edureka / Nedladdningar / Bilder / REGRESSION.png ')

Produktion:

Och med den här grafen kommer vi till slutet av denna PySpark Tutorial Blog.

Så det här är det, killar!

Jag hoppas att ni fick en uppfattning om vad PySpark är, varför Python passar bäst för Spark, RDD och en glimt av maskininlärning med Pyspark i denna PySpark Tutorial Blog. Grattis, du är inte längre en nybörjare i PySpark. Om du vill lära dig mer om PySpark och förstå de olika branschanvändningsfallen, ta en titt på vår Gnista med Python Blogg.

Nu när du har förstått Vad är Pyspark, kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edureka's Python Spark Certification Training med PySpark är utformad för att ge dig de kunskaper och färdigheter som krävs för att bli en framgångsrik Spark Developer med Python och förbereda dig för Cloudera Hadoop och Spark Developer Certification Exam (CCA175).