Uvod u Spark s Pythonom - PySpark za početnike



Apache Spark preuzeo je svijet velikih podataka i analitike, a Python je jedan od najpristupačnijih programskih jezika koji se danas koristi u industriji. Dakle, ovdje na ovom blogu naučit ćemo o Pysparku (iskra s pythonom) kako bismo izvukli najbolje iz oba svijeta.

je jedan od najčešće korištenih okvira kada je riječ o rukovanju i radu s velikim podacima I Piton jedan je od najčešće korištenih programskih jezika za analizu podataka, strojno učenje i još mnogo toga. Pa, zašto ih ne koristiti zajedno? Ovo je gdje Iskra s Pythonom također poznat kao PySpark ulazi uslika.

S prosječnom plaćom od 110.000 USD godišnje za razvojnog programera Apache Spark, nema sumnje da se Spark puno koristi u industriji. Zbogsvojebogata biblioteka, Python koristivećina današnjih znanstvenika i stručnjaka za Analytics. Integriranje Pythona s Sparkom bio je glavni dar zajednici. Spark je razvijen na jeziku Scala, koji je vrlo sličan Javi. Kompajlira programski kôd u bytecode za JVM za obradu velikih podataka. Kako bi podržala Spark s pythonom, zajednica Apache Spark objavila je PySpark.Još od, poznato je kao jedna od najtraženijih vještina u industriji zbog širokog spektra blagodati koje su uslijedile kombiniranjem najboljih iz oba svijeta.U ovom blogu Spark with Python razgovarat ću o sljedećim temama.





Uvod u Apache Spark

Apache Spark je open-source klaster-computing okvir za obrada u stvarnom vremenu razvila Apache Software Foundation. Spark pruža sučelje za implicitno programiranje cijelih klastera paralelizam podataka i tolerancija kvarova.



Ispod su neke od značajki Apache Sparka koje mu daju prednost u odnosu na druge okvire:

Iskrene značajke - Iskra s Pythonom - Edureka

  • 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: Stvarno vrijemeračunanje i mala latencija zbog računanja u memoriji.
  • Poliglot: Jedan je od najvažnijihznačajkeovog okvira jer se može programirati u Scali, Javi, Pythonu i R.

Zašto ići na Python?

Iako je Spark dizajniran u skali, što ga čini gotovo 10 puta bržim od Pythona, ali Scala je brža samo kada broj jezgri koje se koriste je manji . Kako danas većina analize i procesa zahtijeva velik broj jezgri, Scala prednost nije u performansama.



Za programere Python je razmjerno lakše učiti zbog svoje sintakse i standardnih knjižnica. Štoviše, to je dinamički upisani jezik, što znači da RDD-ovi mogu sadržavati objekte više vrsta.

Iako Scala ima SparkMLlib nema dovoljno biblioteka i alata za strojno učenje i NLP svrhe. Štoviše, Scali nedostaje vizualizacija podataka.

Obuka za PySpark | Apache iskra s Pythonom | Edureka

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

Postavljanje Sparka s Pythonom (PySpark)

Nadam se da znate kako .Dakle, jednom kad to učinite raspakiran datoteka s iskrama, instaliran to i dodao je put do .bashrc datoteku, morate unijetiizvor .bashrc

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

Da biste otvorili ljusku pysparka, trebate upisati naredbu./bin/pyspark

Iskra u industriji

Apache Spark zbog svojih nevjerojatnih značajki poput obrada u memoriji , poliglot i brza obrada koriste ih mnoge tvrtke širom svijeta u razne svrhe u raznim industrijama:

Yahoo koristi Apache Spark zbog svojih mogućnosti strojnog učenja za personaliziranje vijesti, web stranica i za ciljano oglašavanje. Koriste Spark s pythonom kako bi otkrili kakve vijesti - korisnici su zainteresirani za čitanje i kategoriziraju vijesti kako bi otkrili kakve bi korisnike zanimalo čitanje svake kategorije vijesti.

TripAdvisor koristi apache spark kako bi pružio savjete milijunima putnika uspoređujući stotine web stranica kako bi pronašao najbolje cijene hotela za svoje kupce. Vrijeme potrebno za čitanje i obradu recenzija hotela u čitljivom formatu vrši se uz pomoć Apache Sparka.

Jedna od najvećih svjetskih platformi za e-trgovinu Alibaba pokreće neke od najvećih poslova Apache Sparka na svijetu kako bi analizirao stotine petabajta podataka na svojoj platformi za e-trgovinu.

PySpark SparkContext i protok podataka

Govoreći o Spark-u s Pythonom, rad s RDD-ima omogućuje biblioteka Py4j. PySpark Shell povezuje Python API s jezgrom iskre i inicijalizira Spark kontekst. Iskreni kontekst je srce svake primjene iskre.

  1. Spark kontekst postavlja interne usluge i uspostavlja vezu s okruženjem izvršenja Spark.
  2. Objekt sparkcontext u programu vozača koordinira sav distribuirani proces i omogućuje dodjelu resursa.
  3. Upravitelji klastera pružaju izvršitelje, koji su JVM proces s logikom.
  4. SparkContext objekt šalje aplikaciju izvršiteljima.
  5. SparkContext izvršava zadatke u svakom izvršitelju.

Slučaj upotrebe PySpark KDD

Pogledajmo sada slučaj upotrebe Kup KDD’99 (Međunarodno natjecanje u otkrivanju znanja i alatima za rudarenje podataka).Ovdje ćemo uzeti djelić skupa podataka jer je izvorni skup podataka prevelik

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

STVARANJE RDD-a:
Sada ovu datoteku možemo koristiti za stvoriti naš RDD .

data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (datoteka_datoteka)

FILTRIRANJE:

Pretpostavimo da želimo računati koliko je normalnih. interakcije koje imamo u našem skupu podataka. Možemo filtar naš raw_data RDD kako slijedi.

normal_raw_data = raw_data.filter (lambda x: 'normalno.' u x)

RAČUNATI:

Sad možemo računati koliko elemenata imamo u novom RDD-u.

od vremena vrijeme uvoza t0 = vrijeme () normal_count = normal_raw_data.count () tt = vrijeme () - t0 print 'Postoje {}' normalne 'interakcije'.format (normal_count) print' Brojanje dovršeno za {} sekundi'.format (okruglo (tt, 3))

Izlaz:

Postoji 97278 'normalnih' interakcija Brojanje dovršeno za 5,951 sekundi

KARTIRANJE:

U ovomeslučajnašu datoteku podataka želimo čitati kao CSV formatiranu. To možemo učiniti primjenom lambda funkcije na svaki element u RDD-u na sljedeći način. Ovdje ćemo koristiti map () i take () transformacija.

kako napraviti moć u pythonu
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 'Raščlanjivanje završeno za {} sekundi '.format (okrugli (tt, 3)) otisak (strelice_glava [0])

Izlaz:

Raščlanjivanje je završeno za 1,715 sekundi [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normalno. ']

CIJEPANJE:

Sada želimo imati svaki element u RDD-u kao par ključ / vrijednost gdje je ključ oznaka (npr. normalan ), a vrijednost je cijeli popis elemenata koji predstavlja redak u CSV formatiranoj datoteci. Mogli bismo postupiti kako slijedi. Ovdje koristimo line.split () i map ().

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] )
 Izlaz: (u'normal.', [u'0', u'tcp', u'http', u'SF', u'181', u'5450', u'0', u'0', u'0.00', u'1.00', . . . . u'normal.'])

ZBIRKA AKCIJE:

Ovdje ćemo koristiti akciju collect (). U memoriju će unijeti sve elemente RDD-a. Iz tog se razloga mora pažljivo koristiti pri radu s velikim RDD-ima.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Podaci prikupljeni u {} sekundi'.format (okrugli (tt, 3))

Izlaz:

Podaci prikupljeni u 17,927 sekundi

To je trajalo duže kao i bilo koja druga radnja koju smo prije koristili, naravno. Svaki radnički čvor Spark koji ima fragment RDD-a mora biti koordiniran kako bi dohvatio njegov dio, a zatim sve zajedno smanjio.

Kao posljednji primjer kombiniranja svih prethodnih, želimo prikupiti svenormalaninterakcije kao parovi ključ / vrijednost.

# preuzmi podatke iz datoteke data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # raščlaniti u parove ključ / vrijednost key_csv_data = raw_data.map (parse_interaction) # filtrirati normalne interakcije ključa normal_key_interactions = key_csv_data. lambda x: x [0] == 'normalno.') # prikupi sve t0 = vrijeme () all_normal = normal_key_interactions.collect () tt = vrijeme () - t0 normal_count = len (all_normal) print 'Podaci prikupljeni u {} sekundi '.format (round (tt, 3)) print' Postoje {} 'normalne' interakcije'.format (normal_count)

Izlaz:

Podaci prikupljeni u 12,485 sekundi Postoji 97278 normalnih interakcija

Dakle, to je to, ljudi!

Nadam se da vam se svidio ovaj blog Spark with Python. Ako ovo čitate, čestitam! Više niste novak za PySpark. Isprobajte ovaj jednostavni primjer na svojim sustavima sada.

Sad kad ste razumjeli osnove PySparka, 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).

Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare i javit ćemo vam se.