Vodič za PySpark - naučite Apache Spark pomoću Pythona



Na ovom blogu na vodiču za PySpark naučit ćete o API-ju PSpark koji se koristi za rad s Apache Spark-om koristeći programski jezik Python.

U svijetu u kojem se podaci generiraju tako alarmantnom brzinom, ispravna analiza tih podataka u točno vrijeme vrlo je korisna. Jedan od najnevjerojatnijih okvira za rukovanje velikim podacima u stvarnom vremenu i provođenje analiza je Apache Spark.Zajedno, ili PySpark jedan je od najtraženijih tečajeva za certificiranje, koji Scali za Spark daje priliku za svoj novac. Dakle u ovome Vodič za PySpark blog, razgovarat ću o sljedećim temama:





Vodič za PySpark: Što je PySpark?

Apache Spark je brzi klaster računalni okvir koji se koristi za obradu, postavljanje upita i analizu velikih podataka. Temeljen na računanju u memoriji, ima prednost u odnosu na nekoliko drugih okvira za velike podatke.

Značajke PySparka - Vodič za PySpark - Edureka



Izvorno napisana u programskom jeziku Scala, zajednica otvorenog koda razvila je nevjerojatan alat za podršku Pythonu za Apache Spark. PySpark pomaže znanstvenicima podataka u sučelju s RDD-ovima u Apache Spark i Python putem svoje biblioteke Py4j. Mnogo je značajki koje PySpark čine boljim okvirom od ostalih:

  • Ubrzati: Sto puta je brži od tradicionalnih velikih okvira za obradu podataka
  • Moćno keširanje: Jednostavan programski sloj pruža moćne mogućnosti predmemoriranja i trajanja diska
  • Uvođenje: Može se rasporediti putem Mesosa, Hadoopa putem pređe ili Sparkovog vlastitog upravitelja klastera
  • Stvarno vrijeme: Izračun u stvarnom vremenu i niska latencija zbog računanja u memoriji
  • Poliglot: Podržava programiranje na skali, javi, pythonu i r

Krenimo dalje s našim blogom vodiča za PySpark i pogledajte gdje se Spark koristi u industriji.

PySpark u industriji

Svaka se industrija vrti oko velikih podataka, a tamo gdje postoje veliki podaci uključena je i analiza. Dakle, pogledajmo razne industrije u kojima se koristi Apache Spark.



Pola jedna je od najvećih industrija koja raste prema internetskom streamingu. Netflix koristi Apache Spark za obradu streama u stvarnom vremenu kako bi pružio personalizirane mrežne preporuke svojim kupcima. Obrađuje 450 milijardi događaji po danu koji se prelijevaju u aplikacije na strani poslužitelja.

Financije je još jedan sektor u kojem obrada Apache Spark u stvarnom vremenu igra važnu ulogu. Banke koriste Spark za pristup i analizu profila na društvenim mrežama radi stjecanja uvida koji im mogu pomoći u donošenju ispravnih poslovnih odluka za procjena kreditnog rizika , ciljani oglasi i segmentacija kupaca. Odbijanje kupaca se također smanjuje pomoću Sparka. Otkrivanje prijevara jedno je od najčešće korištenih područja strojnog učenja u kojem je uključena Spark.

Zdravstvo davatelji usluga koriste Apache Spark za Analizirajte evidenciju pacijenata zajedno s prošlim kliničkim podacima kako bi se utvrdilo koji će se pacijenti vjerojatno suočiti sa zdravstvenim problemima nakon otpuštanja iz klinike. Apache Spark se koristi u Genomsko sekvenciranje kako bi se smanjilo vrijeme potrebno za obradu podataka o genomu.

kako stvoriti singleton klasu u javi

Maloprodaja i e-trgovina je industrija u kojoj se ne može zamisliti da radi bez upotrebe Analize i ciljanog oglašavanja. Jedna od najvećih platformi e-trgovine danas Alibaba pokreće neke od najvećih Spark poslova na svijetu kako bi analizirao petabajte podataka. Alibaba nastupa izdvajanje značajki u podacima o slici. eBay koristi Apache Spark za pružanje Ciljane ponude , poboljšati korisničko iskustvo i optimizirati cjelokupnu izvedbu.

Putovati Industrije također koriste Apache Spark. TripAdvisor , vodeća web stranica za putovanja koja pomaže korisnicima u planiranju savršenog putovanja, koristi Apache Spark kako bi ga ubrzala personalizirane preporuke kupaca .TripAdvisor koristi apache iskricu za pružanje savjeta milijunima putnika putem uspoređujući stotine web stranica kako bi pronašli najbolje cijene hotela za svoje kupce.

Važan aspekt ovog vodiča za PySpark je razumijevanje zašto trebamo ići za Python? Zašto ne Java, Scala ili R?

Pretplatite se na naš youtube kanal da biste dobivali nova ažuriranja ..!


Zašto odabrati Python?

Jednostavno za naučiti: Za programere Python je relativno lakše naučiti zbog svoje sintakse i standardnih knjižnica. Štoviše, to je jezik koji se dinamički upisuje, što znači da RDD-ovi mogu sadržavati objekte više vrsta.

Ogroman skup knjižnica: Scala nema dovoljno alata i knjižnica podataka kao što je Python za strojno učenje i obradu prirodnih jezika. Štoviše, Scali nedostaje dobra vizualizacija i lokalne transformacije podataka.

Ogromna podrška zajednice: Python ima globalnu zajednicu s milijunima programera koji komuniciraju na mreži i izvan nje na tisućama virtualnih i fizičkih lokacija.

Jedna od najvažnijih tema u ovom vodiču za PySpark je upotreba RDD-ova. Da shvatimo što su RDD-ovi

Spark RDD-ovi

Kada je riječ o iterativnom distribuiranom računanju, tj. Obradi podataka na više poslova u proračunima, moramo ponovno koristiti ili dijeliti podatke između više poslova. Raniji okviri poput Hadoopa imali su problema dok su se bavili s više operacija / poslova poput

  • Pohranjivanje podataka u srednju pohranu, kao što je HDFS
  • Višestruki I / O poslovi usporavaju proračune
  • Replikacije i serializacije što zauzvrat čini proces još sporijim

RDD-ovi pokušavaju riješiti sve probleme omogućavanjem distribuiranih računala u memoriji otpornih na kvarove. RDD je kratica za Otporni distribuirani skupovi podataka. RDD je distribuirana apstrakcija memorije koja programerima omogućuje izvođenje računanja u memoriji na velikim klasterima na način otporan na kvarove. Oni su zbirka objekata samo za čitanje raspodijeljen na skupu strojeva koji se mogu obnoviti ako se particija izgubi. Postoji nekoliko operacija izvedenih na RDD-ima:

  • Transformacije: Transformacije stvaraju novi skup podataka od postojećeg. Lijena procjena
  • Radnje: Spark forsira izračune za izvršenje samo kada se radnje pozivaju na RDD-ima

Razumijemo nekoliko Transformacija, radnji i funkcija

Čitanje datoteke i prikaz glavnih n elemenata:

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

Izlaz:

[u'Šuma se javlja kao glavno ekološko i socijalno pitanje koje je danas dobilo oblik više od moćnog demona. ', u' Moramo znati o uzrocima, posljedicama i načinima rješavanja problema nastalih uslijed krčenja šuma. ', u' Dali smo mnogo odlomaka, dugih i kratkih eseja o krčenju šuma kako bismo vašoj djeci i djeci pomogli da se upoznaju s problemom, kao i da sudjeluju u natjecanju u pisanju eseja u školi ili izvan škole. ', u' Možete odabrati bilo koji esej o krčenju šuma koji je naveden u nastavku prema standardu klase. ', u'Ušumljavanje nastaje kao glavni globalni problem društva i okoliša.']

Pretvaranje u mala slova i dijeljenje: (donje i podijeljeno)

def Func (linije): linije = linije.niže () linije = linije.split () povratne linije rdd1 = rdd.map (Func) rdd1.take (5)

Izlaz:

[[u'deforestation ', u'is', u'arising ', u'as', u'the ', u'main', u'evironmental ', u'and', u'social ', u'issue ', u' koji ', u' ima ', u'now', u'taken ', ...... . . ]

Uklanjanje zaustavljenih riječi: (filtar)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'i', 'be', 'been', 'from', 'had' , 'I', 'I', 'why', 'with'] rdd2 = rdd1.filter (lambda z: z nije u stop_words) rdd2.take (10)

Izlaz:

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

Zbroj brojeva od 1 do 500: (Smanji)

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

Izlaz:

124750

Strojno učenje s PySparkom

Nastavljajući naš blog s vodičima za PySpark, analizirajmo neke BasketBall podatke i napravimo neka buduća predviđanja. Dakle, ovdje ćemo koristiti Košarkaške podatke svih igrača NBA-a od tada 1980 [godina uvođenja 3 pokazivača].

Učitavanje podataka:

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

Ispis stupaca:

ispis (df.columns)

Izlaz:

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

Sortiranje igrača (OrderBy) i toPandas:

Ovdje sortiramo igrače na temelju bodova postignutih u sezoni.

df.orderBy ('bodova', rastuće = Netačno). limit (10) .toPandas () [['god', 'igrač', 'dob', 'bodova', 'fg3']]

Izlaz:

Korištenje DSL-a i matplotliba:

Ovdje analiziramo prosječni broj Pokušaji s 3 boda za svaku sezonu u vremenskom ograničenju od 36 min [interval koji odgovara približnoj punoj NBA utakmici s odgovarajućim odmorom]. Izračunavamo ovu metriku koristeći broj pokušaja pogotka s 3 točke (fg3a) i odigranih minuta (mp), a zatim ucrtavamo rezultat pomoću matlplotlib .

s 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') iz 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 ('Godina') _ = plt.title ('Prosjek igrača Pokušaji u 3 točke (po 36 minuta) ') plt.annotate (' uveden pokazivač 3 ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' grey ', skupljanje = 0, širina linije = 2)) plt.annotate (' NBA premješten u liniju s tri točke ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'sivo', skupljanje = 0, širina linije = 2)) plt.annotate ('NBA pomaknut unatrag u 3 točke', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dikt (boja boje = 'siva', skupljanje = 0, širina linije = 2))

Izlaz:

Linearna regresija i VectorAssembler:

Na ovu krivulju možemo uklopiti linearni regresijski model kako bismo modelirali broj pokušaja hitaca za sljedećih 5 godina. Naše podatke moramo transformirati pomoću funkcije VectorAssembler u jedan stupac. Ovo je zahtjev za API linearne regresije u MLlib.

s pyspark.ml.feature import 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 ()

Izlaz:

Model zgrade:

Zatim gradimo svoj objekt modela linearne regresije koristeći naše transformirane podatke.

s pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (trening)

Primjena obučenog modela na skup podataka:

Primjenjujemo naš obučeni model objektnog modela na naš izvorni set treninga zajedno s 5 godina budućih podataka

s pyspark.sql.types import Red # primijeni model za sezonu 1979-80 do sezone 2020-21 training_yrs = training.select ('god'). 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 # izgrađeno testiranje DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # primijeni model linearne regresije df_results = model.transform (all_years_features) .toPandas ()

Zacrtavanje konačnog predviđanja:

Zatim možemo zacrtati svoje rezultate i spremiti graf na određeno mjesto.

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 = Nema) plt.xlabel (' Godina ') plt.ylabel (' Broj pokušaja ') plt.legend (loc = 4) _ = plt.title (' Prosječni pokušaji igrača u 3 boda (po 36 minuta) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Izlaz:

I s ovim grafikonom došli smo do kraja ovog bloga vodiča za PySpark.

Dakle, to je to, momci!

Nadam se da ste dobili ideju o tome što je PySpark, zašto je Python najprikladniji za Spark, RDD-ove i uvid u Strojno učenje s Pysparkom na ovom blogu udžbenika za PySpark. Čestitamo, više niste novak za PySpark. Ako želite saznati više o PySparku i razumjeti različite slučajeve korištenja u industriji, pogledajte naš Iskra s Pythonom Blog.

Sad kad ste shvatili što je Pyspark, pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edureka Obuka za certificiranje Python Spark korištenjem PySparka osmišljen je kako bi vam pružio znanje i vještine potrebne da biste postali uspješni programer Sparka koji koristi Python i pripremio vas za ispit za certifikaciju Cloudera Hadoop i Spark Developer (CCA175).