Įvadas į „Spark with Python“ - „PySpark“ pradedantiesiems



„Apache Spark“ perėmė „Big Data & Analytics“ pasaulį, o „Python“ yra viena iš labiausiai prieinamų programavimo kalbų, kuri šiandien naudojama pramonėje. Taigi čia, šiame tinklaraštyje, sužinosime apie „Pyspark“ (kibirkštis su pitonu), kad gautume geriausią iš abiejų pasaulių.

yra viena plačiausiai naudojamų sistemų, kai reikia tvarkyti ir dirbti su „Big Data AND“ „Python“ yra viena iš dažniausiai naudojamų programavimo kalbų duomenų analizei, mašininiam mokymuisi ir daugeliui kitų. Taigi, kodėl gi jų nenaudojant kartu? Tai kur Kibirkštis su „Python“ taip pat žinomas kaip „PySpark“ įeinapaveikslėlis.

„Microsoft SQL“ serverio pamoka pradedantiesiems

Turint vidutinį „Apache Spark“ kūrėjo atlyginimą 110 000 USD per metus, nėra jokių abejonių, kad „Spark“ pramonėje naudojama daug. Nesjosturtingas bibliotekos rinkinys, „Python“ naudojašiandien dauguma duomenų mokslininkų ir „Analytics“ ekspertų. „Python“ integravimas į „Spark“ buvo pagrindinė dovana bendruomenei. „Spark“ buvo sukurta „Scala“ kalba, kuri labai panaši į „Java“. Jis kaupia programos kodą į JVM baitų kodą, kad būtų galima apdoroti didelius duomenis. Siekdama paremti „Spark“ su pitonu, „Apache Spark“ bendruomenė išleido „PySpark“.Nuo tada, buvo žinoma, kad tai yra vienas iš labiausiai ieškomų įgūdžių visoje pramonėje dėl plataus spektro privalumų, kurie atsirado sujungus geriausius iš šių pasaulių.Šiame tinklaraštyje „Spark with Python“ aptarsiu šias temas.





„Apache Spark“ įvadas

Apache Spark yra atvirojo kodo klasterių skaičiavimo sistema, skirta apdorojimas realiuoju laiku sukūrė „Apache Software Foundation“. „Spark“ suteikia sąsają netiesiogiai programuoti ištisus klasterius duomenų lygiagretumas ir atsparumas gedimams.



Žemiau yra keletas „Apache Spark“ funkcijų, suteikiančių pranašumą prieš kitas sistemas:

„Spark Features“ - „Spark with Python“ - „Edureka“

  • 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: Realaus laikoskaičiavimas ir mažas delsimas dėl atminties skaičiavimo.
  • Poliglotas: Tai viena svarbiausiųfunkcijosšios sistemos, nes ją galima užprogramuoti „Scala“, „Java“, „Python“ ir „R“.

Kodėl verta kreiptis į „Python“?

Nors „Spark“ buvo sukurta skalėje, todėl jis beveik 10 kartų greitesnis nei „Python“, tačiau „Scala“ yra greitesnis tik tada, kai naudojamų šerdžių skaičius yra mažesnis . Kadangi daugumai analizės ir procesų šiais laikais reikia daug branduolių, „Scala“ našumo pranašumas nėra toks didelis.



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.

Nors „Scala“ turi „SparkMLlib“ jo neturi pakankamai bibliotekų ir įrankių mašininiam mokymuisi ir NLP tikslai. Be to, „Scala“ trūksta duomenų vizualizavimo.

„PySpark“ mokymai | „Apache Spark“ su „Python“ Edureka

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

„Spark“ nustatymas naudojant „Python“ („PySpark“)

Tikiuosi, kad jūs, vaikinai, mokate .Taigi, kai tai padarysite atsegtas kibirkšties byla, įdiegta tai ir pridėjo savo kelią .bashrc failą, turite įvestišaltinis .bashrc

eksportuoti SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 eksportuoti PATH = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

Norėdami atidaryti „pyspark“ apvalkalą, turite įvesti komandą./bin/pyspark

Kibirkštis pramonėje

„Apache Spark“ dėl tokių nuostabių savybių kaip atminties apdorojimas , poliglotas ir greitas apdorojimas juos naudoja daugybė kompanijų visame pasaulyje įvairiems tikslams įvairiose pramonės šakose:

„Yahoo“ naudoja „Apache Spark“ savo mašininio mokymosi galimybėms pritaikyti savo naujienas, tinklalapius ir tikslinę reklamą. Jie naudoja „Spark with python“, norėdami sužinoti, kokios naujienos - vartotojai yra suinteresuoti skaityti ir suskirstyti naujienas į kategorijas, kad sužinotų, kokie vartotojai būtų suinteresuoti skaityti kiekvieną naujienų kategoriją.

„TripAdvisor“ naudoja „apache“ kibirkštį, norėdamas patarti milijonams keliautojų, palygindamas šimtus svetainių, kad rastų geriausias viešbučių kainas savo klientams. Laikas, reikalingas skaityti ir apdoroti viešbučių apžvalgas skaitomu formatu, atliekamas „Apache Spark“ pagalba.

Viena didžiausių pasaulyje elektroninės prekybos platformų Alibaba vykdo keletą didžiausių „Apache Spark“ darbų pasaulyje, siekdamas išanalizuoti šimtus petabaitų duomenų savo el. prekybos platformoje.

„PySpark SparkContext“ ir duomenų srautas

Kalbėti apie „Spark“ su „Python“, dirbti su RDD leidžia biblioteka „Py4j“. „PySpark Shell“ susieja „Python“ API su „core“ ir inicijuoja „Spark“ kontekstą. Kibirkšties kontekstas yra bet kurios kibirkšties taikymo širdis.

  1. „Spark“ kontekste nustatomos vidinės paslaugos ir nustatomas ryšys su „Spark“ vykdymo aplinka.
  2. Tvarkyklės konteksto objektas tvarkyklės programoje koordinuoja visą paskirstytą procesą ir leidžia paskirstyti išteklius.
  3. Klasterių valdytojai teikia vykdytojams, kurie yra JVM procesas, logika.
  4. „SparkContext“ objektas siunčia programą vykdytojams.
  5. „SparkContext“ vykdo kiekvieno vykdytojo užduotis.

„PySpark KDD“ naudojimo atvejis

Dabar pažvelkime į naudojimo atvejį KDD’99 taurė (Tarptautinis žinių paieškos ir duomenų gavybos įrankių konkursas).Čia paimsime dalį duomenų rinkinio, nes pradinis duomenų rinkinys yra per didelis

importuoti urllib f = urllib.urlretrieve ('http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz', 'kddcup.data_10_percent.gz')

Kurdama RDD:
Dabar mes galime naudoti šį failą sukurti mūsų RDD .

data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (duomenų_failas)

FILTRAVIMAS:

Tarkime, mes norime suskaičiuoti, kiek normalių. mūsų duomenų rinkinyje. Mes galime filtras mūsų raw_data RDD taip.

normal_raw_data = raw_data.filter (lambda x: 'normalus' x formatu)

SKAIČIUS:

Dabar galime suskaičiuoti kiek elementų turime naujajame RDD.

nuo laiko importavimo laikas t0 = laikas () normal_count = normal_raw_data.count () tt = time () - t0 spausdinti 'Yra {}' normalios 'sąveikos'.format (normal_count) spausdinti' Count įvykdyta per {} sekundes'.format (apvalus (tt, 3))

Išvestis:

Yra 97278 „įprastos“ sąveikos, kurios įvykdytos per 5,951 sekundės

KARTOJIMAS:

Šiameatvejunorime skaityti savo duomenų failą kaip CSV formato failą. Tai galime padaryti taikydami lambda funkciją kiekvienam RDD elementui taip. Čia mes naudosime žemėlapį () ir imkitės () transformacijos.

from pprint import pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Analizė baigta per {} sekundes '.formatas (apvalus (tt, 3)) pprint (head_rows [0])

Išvestis:

Analizė baigta per 1,715 sekundės [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normalu.]]

SPLITTING:

Dabar norime, kad kiekvienas RDD elementas būtų raktų ir verčių pora, kur raktas yra žyma (pvz., normalus ), o vertė yra visas elementų sąrašas, nurodantis CSV formato failo eilutę. Galėtume elgtis taip. Čia mes naudojame line.split () ir žemėlapis ().

def parse_interaction (line): elems = line.split (',') tag = elems [41] return (tag, elems) key_csv_data = raw_data.map (parse_interaction) head_rows = key_csv_data.take (5) pprint (head_rows [0] )
 Išvestis: (u'normalu. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0,00 ', u'1,00', .... U 'nenormalu.]])

RINKTI VEIKSMĄ:

Čia mes naudosime rinkimo () veiksmą. Į atmintį pateks visi RDD elementai. Dėl šios priežasties jis turi būti naudojamas atsargiai dirbant su dideliais RDD.

t0 = laikas () all_raw_data = raw_data.collect () tt = laikas () - t0 spausdinti „Duomenys surinkti per {} sekundes“. formatas (apvalus (tt, 3))

Išvestis:

Duomenys surinkti per 17,927 sekundes

Tai, žinoma, užtruko ilgiau, nei bet kokie kiti veiksmai, kuriuos naudojome anksčiau. Kiekvienas „Spark“ darbuotojo mazgas, turintis RDD fragmentą, turi būti koordinuojamas, kad būtų galima gauti jo dalį ir tada viską sumažinti kartu.

Kaip paskutinį pavyzdį, apjungiantį visus ankstesnius, norime surinkti visusnormalussąveikos kaip raktų ir vertės poros.

# gauti duomenis iš failo data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # analizuoti raktų-reikšmių porose key_csv_data = raw_data.map (parse_interaction) # filtruoti įprastas raktų sąveikas normal_key_interactions = key_csv_data.filter lambda x: x [0] == 'normalus'. # surinkti visus t0 = laikas () all_normal = normalus_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) print 'Duomenys surinkti per {} sekundes '.format (round (tt, 3)) print' Yra {} 'įprasta' sąveika'.format (normal_count)

Išvestis:

Duomenys surinkti per 12,485 sekundes Yra 97278 įprastos sąveikos

Taigi viskas, vaikinai!

Tikiuosi, kad jums patiko šis „Spark with Python“ tinklaraštis. Jei skaitote tai, sveikiname! Jūs nebesate „PySpark“ naujokas. Išbandykite šį paprastą pavyzdį savo sistemose dabar.

Dabar, kai supratote „PySpark“ pagrindus, patikrinkite sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. „Edureka“ „Python Spark“ sertifikavimo mokymai naudojant „PySpark“ 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 egzaminui (CCA175).

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.