„PySpark“ pamoka - sužinokite „Apache Spark“ naudodami „Python“



Šiame „PySpark Tutorial“ tinklaraštyje sužinosite apie „PSpark“ API, kuri naudojama dirbant su „Apache Spark“ naudojant „Python“ programavimo kalbą.

Pasaulyje, kuriame duomenys generuojami tokiu nerimą keliančiu greičiu, teisinga tų duomenų analizė tinkamu laiku yra labai naudinga. Viena iš nuostabiausių sistemų, leidžiančių realiuoju laiku tvarkyti didelius duomenis ir atlikti analizę, yra „Apache Spark“.Kartu arba „PySpark“ yra vienas iš labiausiai ieškomų sertifikavimo kursų, leidžiantis „Scala for Spark“ paleisti pinigus. Taigi šiame „PySpark“ pamoka dienoraštyje aptarsiu šias temas:



„PySpark“ pamoka: kas yra „PySpark“?

„Apache Spark“ yra greito klasterio skaičiavimo sistema, naudojama dideliems duomenims apdoroti, pateikti užklausas ir analizuoti. Remiantis skaičiavimais atmintyje, jis turi pranašumą prieš keletą kitų didžiųjų duomenų sistemų.

__init__

„PySpark“ funkcijos - „PySpark“ pamoka - „Edureka“



Iš pradžių parašyta „Scala“ programavimo kalba, atvirojo kodo bendruomenė sukūrė nuostabų įrankį, skirtą palaikyti „Python“, skirtą „Apache Spark“. „PySpark“ per savo biblioteką padeda duomenų mokslininkams sąveikauti su „Apache Spark“ ir „Python“ RDD Py4j. Yra daugybė funkcijų, dėl kurių „PySpark“ yra geresnė sistema nei kitos:

  • Greitis: Tai 100 kartų greičiau nei tradicinės didelio masto duomenų apdorojimo sistemos
  • Galingas talpinimas: Paprastas programavimo sluoksnis suteikia galingas talpyklas ir disko išlaikymo galimybes
  • Diegimas: Galima dislokuoti per „Mesos“, „Hadoop“ per „Yarn“ arba „Spark“ klasterio valdytoją
  • Realusis laikas: Skaičiavimas realiuoju laiku ir mažas vėlavimas dėl atminties skaičiavimo
  • Poliglotas: Palaiko programavimą „Scala“, „Java“, „Python“ ir „R“

Pažvelkime į savo „PySpark Tutorial“ tinklaraštį ir pažiūrėkime, kur „Spark“ naudojama pramonėje.

„PySpark“ pramonėje

Kiekviena pramonė sukasi apie didžiuosius duomenis ir ten, kur yra dideli duomenys. Taigi pažvelkime į įvairias pramonės šakas, kuriose naudojama „Apache Spark“.



Pusė yra viena didžiausių pramonės šakų, augančių tiesioginio srauto link. „Netflix“ naudoja „Apache Spark“ srauto apdorojimui realiuoju laiku, kad teiktų suasmenintas internetines rekomendacijas savo klientams. Jis apdoroja 450 mlrd įvykių per dieną, kurie teka į serverio programas.

Finansai yra dar vienas sektorius, kuriame „Apache Spark“ apdorojimas realiuoju laiku vaidina svarbų vaidmenį. Bankai naudoja „Spark“, norėdami pasiekti ir analizuoti socialinės žiniasklaidos profilius, įgyti įžvalgų, kurios gali padėti priimti teisingus verslo sprendimus kredito rizikos vertinimas , tiksliniai skelbimai ir klientų segmentavimas. Kliento „Churn“ taip pat sumažinamas naudojant „Spark“. Sukčiavimo nustatymas yra viena plačiausiai naudojamų mašininio mokymosi sričių, kurioje dalyvauja „Spark“.

Sveikatos apsauga teikėjai naudoja „Apache Spark“ Analizuokite pacientų įrašus kartu su ankstesniais klinikiniais duomenimis, siekiant nustatyti, kurie pacientai gali susidurti su sveikatos problemomis po to, kai bus išrašyti iš klinikos. Apache Spark naudojamas Genominė seka sumažinti genomo duomenims apdoroti reikalingą laiką.

Mažmeninė ir elektroninė komercija yra pramonė, kurioje neįsivaizduojamas jos veikimas nenaudojant analizės ir tikslinės reklamos. Viena didžiausių el. Prekybos platformų šiandien Alibaba vykdo keletą didžiausių „Spark Jobs“ darbų pasaulyje, kad galėtų analizuoti petabaitų duomenis. Koncertuoja „Alibaba“ funkcijų išskyrimas vaizdo duomenyse. „eBay“ teikia „Apache Spark“ Tiksliniai pasiūlymai , pagerinti klientų patirtį ir optimizuoti bendrą našumą.

Kelionė Pramonės atstovai taip pat naudoja „Apache Spark“. „TripAdvisor“ , pirmaujanti kelionių svetainė, padedanti vartotojams planuoti tobulą kelionę, naudoja „Apache Spark“, kad ją paspartintų individualizuotos klientų rekomendacijos .TripAdvisor naudoja apache kibirkštį, kad patartų milijonams keliautojų lyginant šimtus svetainių norėdami rasti geriausias viešbučių kainas savo klientams.

Svarbus šios „PySpark“ mokymo programos aspektas yra suprasti, kodėl turime eiti į „Python“? Kodėl ne „Java“, „Scala“ ar „R“?

Norėdami gauti naujienų, užsiprenumeruokite mūsų „YouTube“ kanalą!


Kodėl verta rinktis „Python“?

Lengva išmokti: Programuotojams „Python“ yra palyginti lengviau išmokti dėl savo sintaksės ir standartinių bibliotekų. Be to, tai yra dinamiškai įvesta kalba, o tai reiškia, kad RDD gali laikyti kelių tipų objektus.

Didelis bibliotekų rinkinys: „Scala“ neturi pakankamai duomenų mokslo įrankių ir bibliotekų, tokių kaip „Python“, kad būtų galima mokytis mašinoje ir apdoroti natūralias kalbas. Be to, „Scala“ trūksta geros vizualizacijos ir vietinių duomenų transformacijų.

Didžiulė bendruomenės parama: „Python“ turi pasaulinę bendruomenę, kurioje yra milijonai kūrėjų, kurie sąveikauja internetu ir neprisijungę tūkstančiuose virtualių ir fizinių vietų.

Viena iš svarbiausių šios „PySpark Tutorial“ temų yra RDD naudojimas. Supraskime, kas yra RDD

„Spark RDD“

Kalbant apie pasikartojantį paskirstytą skaičiavimą, t. Y. Duomenis apdorojant keliuose darbuose skaičiuojant, turime pakartotinai naudoti arba dalytis duomenimis tarp kelių darbų. Ankstesnėse sistemose, tokiose kaip Hadoopas, kilo problemų, kai susiduriama su keliomis operacijomis / darbais, pvz

  • Duomenų saugojimas tarpinėse saugyklose, tokiose kaip HDFS
  • Dėl kelių įvesties / išvesties užduočių skaičiavimai sulėtėja
  • Replikacijos ir serijos, o tai savo ruožtu procesą dar lėtina

RDD bando išspręsti visas problemas įgalindami triktims atsparius paskirstytus atminties skaičiavimus. RDD yra trumpas Elastingi paskirstyti duomenų rinkiniai. RDD yra paskirstytos atminties abstrakcija, leidžianti programuotojams atlikti atminties skaičiavimus dideliems klasteriams tolerantiškai. Jie yra tik skaitomas objektų rinkinys suskaidytas į mašinų rinkinį, kurį galima atstatyti, jei prarandamas skaidinys. RDD atliekamos kelios operacijos:

  • Transformacijos: Transformacijos sukuria naują duomenų rinkinį iš esamo. Tingus vertinimas
  • Veiksmai: „Spark“ priverčia atlikti skaičiavimus tik tada, kai veiksmai yra nukreipiami į RDD

Supraskime keletą transformacijų, veiksmų ir funkcijų

kas yra džitas java

Skaityti failą ir rodyti elementus n elementų:

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

Išvestis:

[u'Miškų kirtimas kyla kaip pagrindinė aplinkos ir socialinė problema, kuri dabar įgavo ne tik galingą demoną. Turime žinoti apie priežastis, pasekmes ir būdus, kaip išspręsti problemas, iškilusias dėl miškų kirtimo. Pateikėme daug pastraipų, ilgą ir trumpą esė apie miškų kirtimą, kad galėtume padėti jūsų vaikams ir vaikams geriau sužinoti apie problemą, taip pat dalyvauti esė rašymo konkurse mokykloje ar už jos ribų. Galite pasirinkti bet kurį toliau pateiktą miškų kirtimo rašinį pagal klasės standartą. „Miško kirtimas kyla kaip pagrindinė visuotinė visuomenės ir aplinkos problema.“]

Konvertavimas į mažąsias ir padalijimas: (mažas ir padalytas)

def Func (eilutės): eilutės = eilutės. žemesnės () eilutės = eilutės.split () grąžina eilutes rdd1 = rdd.map (Func) rdd1.take (5)

Išvestis:

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

StopWords šalinimas: (filtras)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'ir', 'be', 'been', 'from', 'had' , „Aš“, „Norėčiau“, „Kodėl“, „su“] rdd2 = rdd1.filtras (lambda z: z nėra stop_words) rdd2.take (10)

Išvestis:

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

Skaičių suma nuo 1 iki 500: (sumažinti)

sum_rdd = sc. lygiagretinti (diapazonas (1500)) sum_rdd.reduce (lambda x, y: x + y)

Rezultatas:

124750

Mašininis mokymasis naudojant „PySpark“

Tęsdami „PySpark Tutorial“ tinklaraštį, išanalizuokime kai kuriuos „BasketBall“ duomenis ir numatysime ateityje. Taigi, čia mes naudosime visų NBA žaidėjų krepšinio duomenis nuo tada 1980 m [3 rodyklių pristatymo metai].

Duomenų įkėlimas:

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

Stulpelių spausdinimas:

spausdinti (df.columns)

Išvestis:

['_c0', 'žaidėjas', 'pos', 'amžius', '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“]

Žaidėjų („OrderBy“) ir „Pandos“ rūšiavimas:

Čia mes rūšiuojame žaidėjus pagal sezone surinktus taškus.

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

Išvestis:

kaip klonuoti objektą Java

DSL ir matplotlib naudojimas:

Čia mes analizuojame vidutinį 3 taškų bandymai kiekvienam sezonui 36 min [intervalas, atitinkantis apytikslį visą NBA žaidimą su pakankamu poilsiu]. Apskaičiuojame šią metriką naudodami 3 taškų lauko įvarčių bandymų (fg3a) ir sužaistų minučių (mp) skaičių, tada rezultatą apskaičiuojame naudodami matlplotlib .

iš pyspark.sql.functions importuoti col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}) .select (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('summa (mp)')). Pseudonimas ('fg3a_p36m'))) .orderBy ('yr') iš matplotlib importo pyplot kaip plt importas gimusiam kaip sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Metai') _ = plt.title ('Žaidėjo vidurkis 3 taškų bandymai (per 36 minutes) ') plt. Nerašykite (' Įvestas 3 žymeklis ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, rodyklių rodikliai = dict (facecolor =' pilka ', susitraukimas = 0, linijos plotis = 2)) plt. užrašyti (' NBA judėjo 3 taškų linijoje ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = „pilka“, trauktis = 0, linijos plotis = 2)) plt. nerašyti („NBA perkelta atgal 3 taškų linija“, xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, rodyklių atramos = dict (facecolor = 'pilka', trauktis = 0, linijos plotis = 2))

Išvestis:

Linijinė regresija ir „VectorAssembler“:

Šioje kreivėje galime pritaikyti tiesinės regresijos modelį, kad modeliuotume bandymų per ateinančius 5 metus skaičių. Turime transformuoti savo duomenis naudodami „VectorAssembler“ funkciją į vieną stulpelį. Tai yra reikalavimas linijinės regresijos API MLlib.

iš pyspark.ml.feature importuoti VectorAssembler t = VectorAssembler (inputCols = ['yr'], outputCol = 'features') mokymas = t.transformuoti (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) mokymas.pandai (). galva ()

Išvestis:

Pastato modelis:

Tada mes sukuriame savo tiesinės regresijos modelio objektą, naudodami mūsų transformuotus duomenis.

iš pyspark.ml.regresijos importo LinearRegression lr = LinearRegression (maxIter = 10) modelis = lr.fit (mokymas)

Apmokyto modelio taikymas duomenų rinkiniui:

Mes pritaikome savo apmokytą objekto modelį savo pradiniam mokymo rinkiniui kartu su 5 metų būsimais duomenimis

iš pyspark.sql.types importo Eilutės Nr. pritaikyti modelį 1979-80 sezonui per 2020-21 sezoną 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 # pastatytas bandymas DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # taikyti tiesinio regresijos modelį df_results = model.transform (all_years_features) .toPandas ()

Paskutinės prognozės planavimas:

Tada galime suskaičiuoti rezultatus ir išsaugoti grafiką nurodytoje vietoje.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (mokymų_yrai, treniruočių_y, spalva = '# f08080 ', label = Nėra) plt.xlabel (' Metai ') plt.ylabel (' Bandymų skaičius ') plt.legend (loc = 4) _ = plt.title (' Žaidėjų vidutinis 3 taškų bandymų skaičius (per 36 minutes) ') plt.tight_layout () plt.savefig (' / home / edureka / Siuntiniai / Vaizdai / REGRESSION.png ')

Išvestis:

Su šia diagrama mes einame į šio „PySpark“ mokymo tinklaraščio pabaigą.

Tai štai, vaikinai!

Tikiuosi, kad jūs, vaikinai, supratote, kas yra „PySpark“, kodėl „Python“ tinkamiausias „Spark“, RDD ir žvilgsnis į mašininį mokymąsi su „Pyspark“ šiame „PySpark“ mokymo tinklaraštyje. Sveikiname, jūs jau nesate „PySpark“ naujokas. Jei norite sužinoti daugiau apie „PySpark“ ir suprasti įvairius pramonės naudojimo atvejus, pažvelkite į mūsų puslapį Kibirkštis su „Python“ Tinklaraštis.

Dabar, kai supratote, kas yra „Pyspark“, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka“ „Python Spark“ sertifikavimo mokymai naudojant „PySpark“ yra skirtas suteikti jums žinių ir įgūdžių, kurių reikia norint tapti sėkmingu „Spark“ kūrėju naudojant „Python“, ir paruošti jus „Cloudera Hadoop“ ir „Spark Developer“ sertifikavimo egzaminams (CCA175).