Inleiding tot Spark met Python - PySpark voor beginners



Apache Spark heeft de Big Data & Analytics-wereld overgenomen en Python is een van de meest toegankelijke programmeertalen die tegenwoordig in de industrie worden gebruikt. Dus hier in deze blog leren we over Pyspark (vonk met python) om het beste uit beide werelden te halen.

is een van de meest gebruikte frameworks als het gaat om het omgaan met en werken met Big Data AND Python is een van de meest gebruikte programmeertalen voor data-analyse, machine learning en nog veel meer. Dus waarom zou u ze niet samen gebruiken? Dit is waar Vonk met Python ook gekend als PySpark komt erindeafbeelding.

Met een gemiddeld salaris van $ 110.000 per jaar voor een Apache Spark-ontwikkelaar, lijdt het geen twijfel dat Spark veel in de branche wordt gebruikt. Omdathaarrijke bibliotheekset, wordt Python gebruikt doordede meerderheid van de datawetenschappers en analytics-experts van vandaag. De integratie van Python met Spark was een groot geschenk voor de gemeenschap. Spark is ontwikkeld in de taal Scala, die sterk lijkt op Java. Het compileert de programmacode in bytecode voor de JVM voor het verwerken van vonk big data. Om Spark met python te ondersteunen, heeft de Apache Spark-community PySpark uitgebracht.Sindsdien, staat bekend als een van de meest gewilde vaardigheden in de branche vanwege het brede scala aan voordelen die voortvloeien uit het combineren van het beste van beide werelden.In deze Spark with Python-blog bespreek ik de volgende onderwerpen.





Inleiding tot Apache Spark

Apache Spark is een open-source framework voor clustercomputing real-time verwerking ontwikkeld door de Apache Software Foundation. Spark biedt een interface voor het programmeren van hele clusters met impliciete data parallellisme en fouttolerantie.



Hieronder staan ​​enkele van de kenmerken van Apache Spark die het een voorsprong geven op andere frameworks:

Spark-functies - Spark met Python - Edureka

  • Snelheid: Het is 100x sneller dan traditionele grootschalige frameworks voor gegevensverwerking.
  • Krachtige caching: Eenvoudige programmeerlaag biedt krachtige mogelijkheden voor caching en schijfpersistentie.
  • Inzet: Kan worden geïmplementeerd via Mesos, Hadoop via Yarn of Spark's eigen clustermanager.
  • Echte tijd: Echte tijdberekening en lage latentie vanwege in-memory berekening.
  • Polyglot: Het is een van de belangrijksteKenmerkenvan dit framework zoals het kan worden geprogrammeerd in Scala, Java, Python en R.

Waarom kiezen voor Python?

Hoewel Spark is ontworpen in scala, wat het bijna 10 keer sneller maakt dan Python, maar Scala is alleen sneller als de het aantal gebruikte kernen is kleiner . Aangezien de meeste analyses en processen tegenwoordig een groot aantal cores vereisen, is het prestatievoordeel van Scala niet zo groot.



Voor programmeurs is Python relatief gemakkelijker leren vanwege de syntaxis en standaardbibliotheken. Bovendien is het een dynamisch getypte taal, wat betekent dat RDD's objecten van meerdere typen kunnen bevatten.

Hoewel Scala heeft SparkMLlib het heeft niet voldoende bibliotheken en tools voor Machine Learning en NLP doeleinden. Bovendien mist Scala datavisualisatie.

PySpark-training | Apache Spark met Python | Edureka

Abonneer je op ons YouTube-kanaal om nieuwe updates te ontvangen ..!

Spark instellen met Python (PySpark)

Ik hoop dat jullie weten hoe dat moet .Dus als je dat eenmaal hebt gedaan uitgepakt het vonkbestand, geïnstalleerd het en het pad naar toegevoegd .bashrc bestand, u moet typenbron .bashrc

hoe u een nummer omkeert
export SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 exporteer PATH = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

Om de pyspark-shell te openen, moet u de opdracht typen./bin/pyspark

Vonk in de industrie

Apache Spark vanwege de geweldige functies zoals in-memory verwerking , polyglot en snelle verwerking worden door veel bedrijven over de hele wereld gebruikt voor verschillende doeleinden in verschillende industrieën:

Yahoo gebruikt Apache Spark voor zijn Machine Learning-mogelijkheden om zijn nieuws, webpagina's en ook voor gerichte advertenties te personaliseren. Ze gebruiken Spark met python om erachter te komen wat voor soort nieuws - gebruikers zijn geïnteresseerd in het lezen en categoriseren van de nieuwsverhalen om erachter te komen wat voor soort gebruikers geïnteresseerd zouden zijn in het lezen van elke categorie nieuws.

TripAdvisor gebruikt apache spark om advies te geven aan miljoenen reizigers door honderden websites te vergelijken om de beste hotelprijzen voor haar klanten te vinden. De tijd die nodig is om de beoordelingen van de hotels in een leesbaar formaat te lezen en te verwerken, wordt gedaan met behulp van Apache Spark.

Een van 's werelds grootste e-commerceplatforms Alibaba beheert enkele van de grootste Apache Spark-banen ter wereld om honderden petabytes aan gegevens op zijn e-commerceplatform te analyseren.

PySpark SparkContext en gegevensstroom

Over Spark gesproken met Python, het werken met RDD's wordt mogelijk gemaakt door de bibliotheek Py4j. PySpark Shell koppelt de Python-API om de kern te vonken en initialiseert de Spark-context. Spark Context is het hart van elke vonkapplicatie.

  1. Spark-context stelt interne services in en brengt een verbinding tot stand met een Spark-uitvoeringsomgeving.
  2. Het sparkcontext-object in het stuurprogramma coördineert het hele gedistribueerde proces en maakt toewijzing van middelen mogelijk.
  3. Clustermanagers bieden uitvoerders, die JVM-processen zijn met logica.
  4. SparkContext-object stuurt de toepassing naar uitvoerders.
  5. SparkContext voert taken uit in elke uitvoerder.

PySpark KDD-gebruiksscenario

Laten we nu eens kijken naar een use case van KDD'99-beker (International Knowledge Discovery and Data Mining Tools Competition).Hier nemen we een fractie van de dataset omdat de originele dataset te groot is

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

RDD MAKEN:
Nu kunnen we dit bestand gebruiken om maak onze RDD .

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

FILTEREN:

Stel dat we willen tellen hoeveel normaal zijn. interacties die we hebben in onze dataset. Wij kunnen filter onze raw_data RDD als volgt.

normal_raw_data = raw_data.filter (lambda x: 'normaal' in x)

AANTAL:

Nu kunnen we tellen hoeveel elementen we hebben in de nieuwe RDD.

vanaf time import time t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 print 'Er zijn {}' normale 'interacties'.format (normal_count) print' Telling voltooid in {} seconden'.format (rond (tt, 3))

Uitgang:

Er zijn 97278 'normale' interacties Telling voltooid in 5.951 seconden

IN KAART BRENGEN:

In dezegevalwe willen ons gegevensbestand lezen als een CSV-geformatteerd bestand. We kunnen dit doen door als volgt een lambda-functie toe te passen op elk element in de RDD. Hier zullen we de map () en take () transformatie.

van pprint import pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Parse voltooid in {} seconden '.format (round (tt, 3)) pprint (head_rows [0])

Uitgang:

Parse voltooid in 1.715 seconden [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normaal. ']

SPLITSEN:

Nu willen we elk element in de RDD hebben als een sleutel / waarde-paar waarbij de sleutel de tag is (bijv. normaal ) en de waarde is de hele lijst met elementen die de rij in het CSV-opgemaakte bestand vertegenwoordigt. We kunnen als volgt te werk gaan. Hier gebruiken we de line.split () en 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] )
 Uitgang: (u'normaal. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0.00 ', u'1.00', .... U'normaal. '])

DE COLLECT ACTIE:

Hier gaan we de actie collect () gebruiken. Het haalt alle elementen van RDD in het geheugen. Om deze reden moet het voorzichtig worden gebruikt bij het werken met grote RDD's.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Gegevens verzameld in {} seconden'. formaat (ronde (tt, 3))

Uitgang:

Gegevens verzameld in 17.927 seconden

Dat duurde natuurlijk langer dan elke andere actie die we eerder gebruikten. Elk Spark-werkknooppunt dat een fragment van de RDD heeft, moet worden gecoördineerd om zijn deel op te halen en vervolgens alles samen te verkleinen.

Als laatste voorbeeld dat al het voorgaande combineert, willen we allenormaalinteracties als sleutel-waardeparen.

# haal data uit bestand data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # parseer in sleutel-waardeparen key_csv_data = raw_data.map (parse_interaction) # filter normale sleutelinteracties normal_key_interactions = key_csv_data.filter ( lambda x: x [0] == 'normal.') # collect all t0 = time () all_normal = normal_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) print 'Gegevens verzameld in {} seconden '.format (round (tt, 3)) print' Er zijn {} 'normale' interacties'.format (normal_count)

Uitgang:

Gegevens verzameld in 12.485 seconden. Er zijn 97.278 normale interacties

Dus dit is het, jongens!

Ik hoop dat je genoten hebt van deze Spark with Python-blog. Als u dit leest, gefeliciteerd! Je bent niet langer een nieuweling bij PySpark. Probeer dit eenvoudige voorbeeld nu uit op uw systemen.

Nu je de basisprincipes van PySpark hebt begrepen, kun je het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. Edureka's Python Spark-certificeringstraining met PySpark is ontworpen om u de kennis en vaardigheden te bieden die nodig zijn om een ​​succesvolle Spark Developer te worden die Python gebruikt en om u voor te bereiden op het Cloudera Hadoop en Spark Developer Certification Exam (CCA175).

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen contact met u op.