Introduktion til Spark with Python - PySpark for begyndere



Apache Spark har overtaget Big Data & Analytics-verdenen, og Python er et af de mest tilgængelige programmeringssprog, der bruges i branchen i dag. Så her i denne blog lærer vi om Pyspark (gnist med python) for at få det bedste ud af begge verdener.

er en af ​​de mest anvendte rammer, når det gælder håndtering og arbejde med Big Data AND Python er et af de mest anvendte programmeringssprog til dataanalyse, maskinindlæring og meget mere. Så hvorfor ikke bruge dem sammen? Det er her Gnist med Python også kendt som PySpark kommer inddetbillede.

Med en gennemsnitlig løn på $ 110.000 pa for en Apache Spark Developer er der ingen tvivl om, at Spark bruges meget i branchen. På grund afdensrig bibliotekssæt, Python bruges afdetflertallet af dataforskere og Analytics-eksperter i dag. Integrering af Python med Spark var en vigtig gave til samfundet. Spark blev udviklet på Scala-sprog, som meget ligner Java. Det kompilerer programkoden til bytekode til JVM til gnistbehandling af store data. For at støtte Spark med python frigav Apache Spark-samfundet PySpark.Lige siden, har været kendt for at være en af ​​de mest efterspurgte færdigheder i hele branchen på grund af den brede vifte af fordele, der kom efter at have kombineret det bedste fra begge disse verdener.I denne Spark with Python-blog vil jeg diskutere følgende emner.





Introduktion til Apache Spark

Apache Spark er en open source cluster-computing-ramme til realtidsbehandling udviklet af Apache Software Foundation. Spark giver en grænseflade til programmering af hele klynger med implicit dataparallelisme og fejltolerance.



Nedenfor er nogle af funktionerne i Apache Spark, som giver det en fordel i forhold til andre rammer:

Gnistfunktioner - Gnist med Python - Edureka

  • Hastighed: Det er 100 gange hurtigere end traditionelle store databehandlingsrammer.
  • Kraftig caching: Enkelt programmeringslag giver kraftige caching- og diskholdbarhedsfunktioner.
  • Implementering: Kan implementeres gennem Mesos, Hadoop via Garn eller Sparks egen klyngemanager.
  • Realtid: Realtidberegning og lav ventetid på grund af beregning i hukommelsen.
  • Polyglot: Det er en af ​​de vigtigstefunktioneraf denne ramme, da den kan programmeres i Scala, Java, Python og R.

Hvorfor gå til Python?

Selvom Spark blev designet i scala, hvilket gør det næsten 10 gange hurtigere end Python, men Scala er kun hurtigere, når antallet af anvendte kerner er mindre . Da de fleste af analyserne og processen i dag kræver et stort antal kerner, er fordelene ved Scala ikke så meget.



For programmører er Python det forholdsvis lettere at lære på grund af dens syntaks og standardbiblioteker. Desuden er det en dynamisk skrevet sprog, hvilket betyder, at RDD'er kan indeholde objekter af flere typer.

Selvom Scala har gjort det SparkMLlib det har det ikke nok biblioteker og værktøjer til maskinindlæring og NLP formål. Desuden mangler Scala datavisualisering.

PySpark træning | Apache Spark med Python | Edureka

Abonner på vores youtube-kanal for at få nye opdateringer ..!

Opsætning af Spark med Python (PySpark)

Jeg håber I ved hvordan man gør det .Så når du har gjort det udpakket gnistfilen, installeret det og tilføjede det sti til .bashrc fil, skal du indtastekilde .bashrc

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

For at åbne pyspark shell skal du indtaste kommandoen./bin/pyspark

Gnist i industrien

Apache Spark på grund af det fantastiske funktioner som behandling i hukommelsen , polyglot og hurtig behandling bruges af mange virksomheder over hele kloden til forskellige formål i forskellige brancher:

Yahoo bruger Apache Spark til sine maskinlæringsfunktioner til at personalisere sine nyheder, websider og også til målreklame. De bruger Spark med python til at finde ud af, hvilken slags nyheder - brugere er interesserede i at læse og kategorisere nyhedshistorierne for at finde ud af, hvilken type brugere der er interesseret i at læse hver nyhedskategori.

TripAdvisor bruger apache-gnist til at rådgive millioner af rejsende ved at sammenligne hundreder af websteder for at finde de bedste hotelpriser til sine kunder. Den tid, det tager at læse og behandle anmeldelserne af hotellerne i et læsbart format, udføres ved hjælp af Apache Spark.

En af verdens største e-handelsplatform Alibaba kører nogle af de største Apache Spark-job i verden for at analysere hundreder af petabytes data på sin e-handelsplatform.

PySpark SparkContext og Data Flow

Taler om Spark with Python, arbejde med RDD'er er muliggjort af biblioteket Py4j. PySpark Shell forbinder Python API til gnistkerne og initialiserer Spark Context. Gnistkontekst er hjertet i enhver gnistapplikation.

  1. Spark-kontekst opretter interne tjenester og opretter en forbindelse til et Spark-eksekveringsmiljø.
  2. Sparkcontext-objektet i driverprogrammet koordinerer al den distribuerede proces og tillader ressourcetildeling.
  3. Cluster Managers giver eksekutører, som er JVM-processen med logik.
  4. SparkContext-objekt sender applikationen til eksekutorer.
  5. SparkContext udfører opgaver i hver eksekutor.

PySpark KDD-brugssag

Lad os nu se på en brugssag om KDD'99 Cup (International Knowledge Discovery og Data Mining Tools Competition).Her tager vi en brøkdel af datasættet, fordi det oprindelige datasæt er for stort

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

Oprettelse af RDD:
Nu kan vi bruge denne fil til Opret vores RDD .

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

FILTRERING:

Antag, at vi vil tælle, hvor mange normale. interaktioner, vi har i vores datasæt. Vi kan filter vores raw_data RDD som følger.

normal_raw_data = raw_data.filter (lambda x: 'normal.' i x)

TÆLLE:

Nu kan vi tælle hvor mange elementer vi har i den nye RDD.

fra tidspunkt for import af tid t0 = tid () normal_count = normal_raw_data.count () tt = tid () - t0 print 'Der er {}' normale 'interaktioner'. format (normal_count) print 'Antal udført i {} sekunder'. format (rund (tt, 3))

Produktion:

Der er 97278 'normale' interaktioner, der er gennemført på 5.951 sekunder

Kortlægning:

Herisagvi vil læse vores datafil som en CSV-formateret. Vi kan gøre dette ved at anvende en lambda-funktion på hvert element i RDD som følger. Her bruger vi kortlæg () og tag () transformation.

implementering af en sammenkædet liste i c
fra pprint import pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Analyse afsluttet på {} sekunder '.format (rund (tt, 3)) pprint (head_rows [0])

Produktion:

Parse afsluttet på 1.715 sekunder [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normal. ']

SPLITTING:

Nu vil vi have hvert element i RDD som et nøgleværdipar, hvor nøglen er mærket (f.eks. normal ) og værdien er hele listen over elementer, der repræsenterer rækken i CSV-formateret fil. Vi kunne gå frem som følger. Her bruger vi line.split () og kort ().

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

SAMLINGEN:

Her skal vi bruge indsamlingen (). Det vil få alle elementerne i RDD i hukommelsen. Af denne grund skal det bruges med forsigtighed, når du arbejder med store RDD'er.

t0 = tid () all_raw_data = raw_data.collect () tt = tid () - t0 print 'Data indsamlet i {} sekunder'. format (runde (tt, 3))

Produktion:

Data indsamlet på 17.927 sekunder

Det tog længere tid som enhver anden handling, vi brugte før, selvfølgelig. Hver Spark-arbejdsknude, der har et fragment af RDD, skal koordineres for at hente sin del og derefter reducere alt sammen.

Som et sidste eksempel, der kombinerer alt det foregående, ønsker vi at samle alle denormalinteraktioner som nøgleværdipar.

# få data fra fil data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # del i nøgleværdipar key_csv_data = raw_data.map (parse_interaction) # filter normale nøgleinteraktioner normal_key_interactions = key_csv_data.filter ( lambda x: x [0] == 'normal.') # saml alle t0 = tid () all_normal = normal_key_interactions.collect () tt = tid () - t0 normal_count = len (all_normal) print 'Data indsamlet på {} sekunder '.format (rund (tt, 3)) print' Der er {} 'normale' interaktioner '. format (normal_tælling)

Produktion:

Data indsamlet på 12.485 sekunder Der er 97278 normale interaktioner

Så dette er det, fyre!

Jeg håber, du har haft denne Spark with Python-blog. Hvis du læser dette, tillykke! Du er ikke længere nybegynder i PySpark. Prøv dette enkle eksempel på dine systemer nu.

Nu hvor du har forstået det grundlæggende i PySpark, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edureka's Python Spark-certificeringstræning ved hjælp af PySpark er designet til at give dig den viden og de færdigheder, der kræves for at blive en succesrig Spark Developer ved hjælp af Python og forberede dig til Cloudera Hadoop og Spark Developer Certification Exam (CCA175).

Har du et spørgsmål til os? Nævn det i kommentarfeltet, så vender vi tilbage til dig.