Tutorial PySpark - Aflați Apache Spark folosind Python



În acest blog pe PySpark Tutorial, veți afla despre API-ul PSpark care este utilizat pentru a lucra cu Apache Spark folosind limbajul de programare Python.

Într-o lume în care datele sunt generate într-un ritm atât de alarmant, analiza corectă a acestor date la momentul corect este foarte utilă. Unul dintre cele mai uimitoare cadre pentru a gestiona datele mari în timp real și pentru a efectua analize este Apache Spark.Împreună, sau PySpark este unul dintre cele mai căutate cursuri de certificare, oferind Scala pentru Spark o alergare pentru banii săi. Deci în asta Tutorial PySpark blog, voi discuta despre următoarele subiecte:





Tutorial PySpark: Ce este PySpark?

Apache Spark este un cadru de calcul rapid cluster care este utilizat pentru procesarea, interogarea și analiza Big Data. Fiind bazat pe calculul în memorie, are un avantaj față de alte câteva cadre de date mari.

Caracteristici PySpark - Tutorial PySpark - Edureka



Scrisă inițial în Limbajul de programare Scala, comunitatea open source a dezvoltat un instrument uimitor pentru a sprijini Python pentru Apache Spark. PySpark ajută oamenii de știință de date să interacționeze cu RDD-uri în Apache Spark și Python prin biblioteca sa Py4j. Există multe caracteristici care fac din PySpark un cadru mai bun decât altele:

  • Viteză: Este de 100 de ori mai rapid decât cadrele tradiționale de procesare a datelor pe scară largă
  • Caching puternic: Stratul de programare simplu oferă capacități puternice de stocare în cache și persistență pe disc
  • Implementare: Poate fi implementat prin Mesos, Hadoop prin Yarn sau propriul manager de cluster Spark
  • Timp real: Calcul în timp real și latență scăzută datorită calculului în memorie
  • Poliglot: Sprijină programarea în Scala, Java, Python și R

Să mergem mai departe cu blogul nostru Tutorial PySpark și să vedem unde este utilizată Spark în industrie.

PySpark în industrie

Fiecare industrie se învârte în jurul Big Data și acolo unde există Big Data, este implicată analiza. Așadar, să aruncăm o privire asupra diferitelor industrii în care este utilizat Apache Spark.



Jumătate este una dintre cele mai mari industrii în creștere către streaming online. Netflix folosește Apache Spark pentru procesarea fluxurilor în timp real pentru a oferi clienților săi recomandări online personalizate. Procesează 450 miliarde evenimente pe zi care se deplasează către aplicații de pe server.

Finanţa este un alt sector în care procesarea în timp real a lui Apache Spark joacă un rol important. Băncile folosesc Spark pentru a accesa și analiza profilurile din rețelele sociale, pentru a obține informații care îi pot ajuta să ia decizii de afaceri corecte evaluarea riscului de credit , anunțuri direcționate și segmentarea clienților. Client Churn este, de asemenea, redus folosind Spark. Detectarea fraudei este una dintre cele mai utilizate domenii de învățare automată în care este implicată Spark.

Sănătate furnizorii folosesc Apache Spark pentru Analizați înregistrările pacienților împreună cu datele clinice anterioare pentru a identifica pacienții care sunt susceptibili să se confrunte cu probleme de sănătate după ce au fost externați din clinică. Apache Spark este utilizat în Secvențierea genomică pentru a reduce timpul necesar procesării datelor genomului.

Retail și comerț electronic este o industrie în care nu vă puteți imagina că funcționează fără utilizarea analizei și a publicității direcționate. Una dintre cele mai mari platforme de comerț electronic de astăzi Alibaba rulează unele dintre cele mai mari locuri de muncă Spark din lume pentru a analiza petabytes de date. Alibaba cântă extragerea caracteristicii în datele de imagine. eBay folosește Apache Spark pentru a furniza Oferte vizate , îmbunătățesc experiența clienților și optimizează performanța generală.

Voiaj De asemenea, industriile folosesc Apache Spark. TripAdvisor , un site de turism de vârf, care ajută utilizatorii să planifice o călătorie perfectă, utilizează Apache Spark pentru a-i accelera recomandări personalizate ale clienților .TripAdvisor utilizează apache spark pentru a oferi sfaturi pentru milioane de călători comparând sute de site-uri web pentru a găsi cele mai bune prețuri hoteliere pentru clienții săi.

Un aspect important al acestui tutorial PySpark este să înțelegem de ce trebuie să mergem pentru Python? De ce nu Java, Scala sau R?

Abonați-vă la canalul nostru YouTube pentru a primi noi actualizări ..!


De ce să mergi pentru Python?

Usor de invatat: Pentru programatori, Python este relativ mai ușor de învățat datorită sintaxei sale și a bibliotecilor standard. Mai mult, este un limbaj tastat dinamic, ceea ce înseamnă că RDD-urile pot conține obiecte de mai multe tipuri.

Un set vast de biblioteci: Scala nu are suficiente instrumente și biblioteci de știință a datelor, cum ar fi Python, pentru învățarea automată și procesarea limbajului natural. Mai mult, Scala nu are o vizualizare bună și transformări de date locale.

Suport comunitar imens: Python are o comunitate globală cu milioane de dezvoltatori care interacționează online și offline în mii de locații virtuale și fizice.

Unul dintre cele mai importante subiecte din acest tutorial PySpark este utilizarea RDD-urilor. Să înțelegem ce sunt RDD-urile

Spark RDD-uri

Când vine vorba de calcul distribuit iterativ, adică prelucrarea datelor pe mai multe joburi în calcule, trebuie să refolosim sau să partajăm date între mai multe joburi. Cadrele anterioare, cum ar fi Hadoop, au avut probleme în timp ce se ocupau de mai multe operațiuni / joburi

  • Stocarea datelor în stocarea intermediară, cum ar fi HDFS
  • Lucrările multiple de I / O fac calculele lente
  • Replicări și serializări care, la rândul lor, fac procesul mai lent

RDD-urile încearcă să rezolve toate problemele, permițând calcule în memorie distribuite tolerante la erori. RDD este prescurtarea Seturi de date distribuite rezistente. RDD este o abstracție de memorie distribuită care permite programatorilor să efectueze calcule în memorie pe clustere mari într-un mod tolerant la erori. Ei sunt colecție de obiecte numai în citire partiționate pe un set de mașini care pot fi reconstruite dacă se pierde o partiție. Există mai multe operații efectuate pe RDD-uri:

  • Transformări: Transformările creează un nou set de date dintr-unul existent. Evaluare leneșă
  • Acțiuni: Spark forțează calculele pentru execuție numai atunci când acțiunile sunt invocate pe RDD-uri

Să înțelegem câteva transformări, acțiuni și funcții

Citirea unui fișier și afișarea Topului elementelor n:

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

Ieșire:

[u ’Defrișarea apare ca principală problemă de mediu și socială care a luat acum forma mai mult decât un demon puternic. Trebuie să știm despre cauzele, efectele și modalitățile de a rezolva problemele apărute din cauza defrișărilor. Am furnizat multe paragrafe, eseuri lungi și scurte despre defrișări pentru a vă ajuta copiii și copiii să conștientizeze problema, precum și să participe la concursul de redactare a eseului în școală sau în afara școlii. ', u'Puteți selecta orice eseu de defrișare dat mai jos în conformitate cu standardul clasei. „,„ Împădurirea apare ca o problemă globală majoră pentru societate și mediu. ”]

Conversia la litere mici și împărțire: (mai mici și împărțite)

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

Ieșire:

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

Eliminarea StopWords: (Filtru)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , „Eu”, „aș fi”, „de ce”, „cu”] rdd2 = rdd1.filter (lambda z: z not in stop_words) rdd2.take (10)

Ieșire:

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

Suma numerelor de la 1 la 500: (Reduceți)

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

Ieșire:

124750

Învățare automată cu PySpark

Continuând blogul nostru Tutorial PySpark, să analizăm câteva date BasketBall și să facem o predicție viitoare. Deci, aici vom folosi datele de baschet ale tuturor jucătorilor NBA de atunci 1980 [anul introducerii a 3 pointeri].

Încărcare date:

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

Tipărirea coloanelor:

print (coloane df)

Ieșire:

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

Sortarea jucătorilor (OrderBy) și toPandas:

Aici sortăm jucătorii în funcție de punctul marcat într-un sezon.

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

Ieșire:

Folosind DSL și matplotlib:

Aici analizăm numărul mediu de Încercări în 3 puncte pentru fiecare sezon într - o limită de timp de 36 min [un interval corespunzător unui joc NBA complet aproximativ cu odihnă adecvată]. Calculăm această valoare utilizând numărul de încercări de 3 puncte de câmp (fg3a) și minutele jucate (mp) și apoi trasăm rezultatul folosind matlplotlib .

din 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') from 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 ('Media jucătorului') Încercări în 3 puncte (la 36 de minute) ') plt.annotate (' 3 pointer introdus ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' gri ', shrink = 0, lățime de linie = 2)) plt.annotate (' NBA mutat în linie în 3 puncte ', xy = (1996, 2.4), xytext = (1991.5, 2.7), font font = 9, arrowprops = dict (facecolor = 'gri', micșorat = 0, lățime de linie = 2)) plt.annotate ('NBA s-a deplasat înapoi cu 3 puncte linie', xy = (1998, 2.), xytext = (1998.5, 2.4), dimensiune font = 9, săgeți = dict (facecolor = 'gri', micșorat = 0, lățime de linie = 2))

Ieșire:

Regresie liniară și VectorAssembler:

Putem adapta un model de regresie liniar la această curbă pentru a modela numărul de încercări de lovitură pentru următorii 5 ani. Trebuie să ne transformăm datele folosind funcția VectorAssembler într-o singură coloană. Acesta este un cerinţă pentru API-ul de regresie liniară în MLlib.

tutorial informatica powercenter pentru începători
din 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 ()

Ieșire:

Modelul clădirii:

Apoi ne construim obiectul model de regresie liniară folosind datele noastre transformate.

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

Aplicarea modelului instruit la setul de date:

Aplicăm modelul nostru de obiecte antrenate la setul nostru original de formare, împreună cu 5 ani de date viitoare

din pyspark.sql.types import Rândul # aplica modelul pentru sezonul 1979-80 până în sezonul 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 # built testing DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (rând) .toDF ()) # aplica modelul de regresie liniară df_results = model.transform (all_years_features) .toPandas ()

Plotarea predicției finale:

Putem apoi să trasăm rezultatele și să salvăm graficul într-o locație specificată.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', etichetă = Niciuna) plt.xlabel (' An ') plt.ylabel (' Număr de încercări ') plt.legend (loc = 4) _ = plt.title (' Încercări medii în 3 puncte ale jucătorului (la 36 de minute) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Ieșire:

Și cu acest grafic, ajungem la sfârșitul acestui blog tutorial PySpark.

Deci asta este, băieți!

Sper că v-ați făcut o idee despre ce este PySpark, de ce Python este cel mai potrivit pentru Spark, RDD-uri și o privire asupra învățării automate cu Pyspark în acest blog tutorial PySpark. Felicitări, nu mai ești începător în PySpark. Dacă doriți să aflați mai multe despre PySpark și să înțelegeți diferitele cazuri de utilizare din industrie, aruncați o privire la Spark cu Python Blog.

Acum că ați înțeles Ce este Pyspark, verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Edureka’s Instruire de certificare Python Spark folosind PySpark este conceput pentru a vă oferi cunoștințele și abilitățile necesare pentru a deveni Spark Developer de succes folosind Python și pentru a vă pregăti pentru Cloudera Hadoop și Spark Developer Certification Exam (CCA175)