Tutorial PySpark: apreneu Apache Spark amb Python



En aquest bloc sobre el tutorial de PySpark, coneixereu l’API de PSpark que s’utilitza per treballar amb Apache Spark mitjançant el llenguatge de programació Python.

En un món on es generen dades a un ritme tan alarmant, és molt útil l’anàlisi correcta d’aquestes dades al moment correcte. Un dels marcs més sorprenents per manejar big data en temps real i realitzar anàlisis és Apache Spark.Junts, o PySpark és un dels cursos de certificació més sol·licitats, donant a Scala for Spark una cursa pels seus diners. Així doncs, en això PySpark Tutorial bloc, parlaré dels temes següents:





Tutorial PySpark: Què és PySpark?

Apache Spark és un marc d’informàtica de clúster ràpid que s’utilitza per processar, consultar i analitzar Big Data. Basat en el càlcul a la memòria, té un avantatge sobre diversos altres marcs de grans dades.

Funcions de PySpark - Tutorial de PySpark - Edureka



Escrita originalment en Llenguatge de programació Scala, la comunitat de codi obert ha desenvolupat una eina increïble per donar suport a Python per a Apache Spark. PySpark ajuda els científics de dades a relacionar-se amb els RDD d'Apache Spark i Python a través de la seva biblioteca Py4j. Hi ha moltes funcions que fan que PySpark sigui un marc millor que altres:

  • Velocitat: És 100 vegades més ràpid que els marcs tradicionals de processament de dades a gran escala
  • Memòria cau potent: La capa de programació simple proporciona capacitats de memòria cau i persistència de disc potents
  • Desplegament: Es pot desplegar a través de Mesos, Hadoop mitjançant Yarn o el propi gestor de clústers de Spark
  • Temps real: Càlcul en temps real i baixa latència a causa del càlcul a la memòria
  • Políglota: Admet programació en Scala, Java, Python i R

Continuem amb el nostre bloc de tutorial PySpark i vegem on s’utilitza Spark a la indústria.

PySpark a la indústria

Totes les indústries giren al voltant del Big Data i hi ha anàlisi on hi ha Big Data. Així que donem una ullada a les diverses indústries on s’utilitza Apache Spark.



Mitjana és una de les indústries més grans que creix cap a la transmissió en línia. Netflix utilitza Apache Spark per al processament de transmissions en temps real per proporcionar recomanacions en línia personalitzades als seus clients. Es processa 450.000 milions esdeveniments diaris que flueixen a les aplicacions del servidor.

Finances és un altre sector on el processament en temps real d’Apache Spark té un paper important. Els bancs utilitzen Spark per accedir i analitzar els perfils de les xarxes socials, per obtenir informació que els pot ajudar a prendre decisions empresarials adequades avaluació del risc de crèdit , anuncis orientats i segmentació de clients. Customer Churn també es redueix mitjançant Spark. Detecció de fraus és una de les àrees d’aprenentatge automàtic més utilitzades on hi participa Spark.

Atenció sanitària els proveïdors utilitzen Apache Spark per Analitzar els registres de pacients juntament amb dades clíniques anteriors per identificar quins pacients poden afrontar problemes de salut després de rebre l’alta de la clínica. Apache Spark s'utilitza a Seqüenciació genòmica per reduir el temps necessari per processar les dades del genoma.

Venda al detall i comerç electrònic és una indústria on no s’imagina que funcioni sense l’ús d’anàlisis i publicitat orientada. Una de les plataformes de comerç electrònic més grans actualment Alibaba gestiona alguns dels Spark Jobs més grans del món per analitzar petabytes de dades. Alibaba actua extracció de característiques a les dades de la imatge. eBay utilitza Apache Spark per proporcionar Ofertes orientades , millorar l'experiència del client i optimitzar el rendiment general.

Viatges Les indústries també utilitzen Apache Spark. TripAdvisor , un lloc web de viatges líder que ajuda els usuaris a planificar un viatge perfecte, està utilitzant Apache Spark per accelerar-ne la recomanacions personalitzades dels clients .TripAdvisor utilitza l'apache spark per proporcionar consells a milions de viatgers comparant centenars de llocs web per trobar els millors preus d’hotels per als seus clients.

Un aspecte important d’aquest tutorial de PySpark és entendre per què hem d’aplicar Python? Per què no Java, Scala o R?

Subscriu-te al nostre canal de youtube per obtenir noves actualitzacions ..!


Per què anar per Python?

Fàcil d'aprendre: Per als programadors, Python és relativament més fàcil d'aprendre a causa de la seva sintaxi i les biblioteques estàndard. A més, és un llenguatge de tipus dinàmic, cosa que significa que els RDD poden contenir objectes de diversos tipus.

Un ampli conjunt de biblioteques: Scala no disposa de prou eines i biblioteques de ciències de dades com Python per a l’aprenentatge automàtic i el processament del llenguatge natural. A més, a Scala li falta una bona visualització i transformacions de dades locals.

Assistència comunitària enorme: Python té una comunitat global amb milions de desenvolupadors que interactuen en línia i fora de línia en milers d’ubicacions virtuals i físiques.

Un dels temes més importants d’aquest tutorial de PySpark és l’ús de RDD. Comprenem què són els RDD

Spark RDDs

Quan es tracta d’informàtica distribuïda iterativa, és a dir, processar dades en diversos treballs en càlculs, hem de reutilitzar o compartir dades entre diversos treballs. Els marcs anteriors com Hadoop tenien problemes en tractar diverses operacions / feines com ara

  • Emmagatzematge de dades en emmagatzematge intermedi com HDFS
  • Diversos treballs d'E / S fan que els càlculs siguin lents
  • Replicacions i serialitzacions que al seu torn fan que el procés sigui encara més lent

Els RDD intenten resoldre tots els problemes habilitant càlculs de memòria distribuïts tolerants a errors. RDD és l'abreviatura de Conjunts de dades distribuïts resistents. RDD és una abstracció de memòria distribuïda que permet als programadors realitzar càlculs en memòria en clústers grans de manera tolerant a fallades. Són els col·lecció d'objectes de només lectura particionat en un conjunt de màquines que es poden reconstruir si es perd una partició. Hi ha diverses operacions realitzades en RDD:

  • Transformacions: Les transformacions creen un conjunt de dades nou a partir d’un existent. Avaluació mandrosa
  • Accions: Spark força els càlculs per a l'execució només quan s'invoquen accions als RDD

Comprenguem algunes transformacions, accions i funcions

Llegir un fitxer i mostrar els n elements principals:

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

Sortida:

[u'La desforestació sorgeix com el principal problema mediambiental i social que ara ha pres la forma d'un dimoni poderós. Hem de conèixer les causes, els efectes i les maneres de resoldre els problemes sorgits a causa de la desforestació. Hem proporcionat molts paràgrafs, assaigs llargs i breus sobre la deforestació per ajudar els vostres fills i filles a prendre consciència sobre el problema, així com a participar en el concurs de redacció d'assaigs a l'escola o fora de l'escola. Podeu seleccionar qualsevol assaig de desforestació que es doni a continuació segons l'estàndard de la classe. ', u'La desforestació sorgeix com el principal problema mundial per a la societat i el medi ambient.']

Conversió a minúscules i divisió: (minúscules i dividides)

def Func (lines): lines = lines.lower () lines = lines.split () return lines rdd1 = rdd.map (Func) rdd1.take (5)

Sortida:

[[u'deforestation ', u'is', u'arising ', u'as', u'the ', u'main', u'environmental ', u'and', u'social ', u'issue ', u'qu', u'has ', u'now', you'taken ', ...... . . ]

Eliminació de StopWords: (filtre)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'Jo', 'Jo', 'per què', 'amb'] rdd2 = rdd1.filter (lambda z: z no a stop_words) rdd2.take (10)

Sortida:

[u'deforestation ', u'arising', u'main ', u'vironmental', u'social ', u'issue', u'which ', u'has', u'now ', you'taken' ]

Suma de nombres de l'1 al 500: (Reduir)

sum_rdd = sc.parallelize (interval (1.500)) sum_rdd.reduce (lambda x, y: x + y)

Sortida:

124.750

Aprenentatge automàtic amb PySpark

Continuant amb el nostre bloc de tutorial PySpark, analitzem algunes dades de BasketBall i fem una predicció futura. Per tant, aquí utilitzarem les dades de bàsquet de tots els jugadors de la NBA des de llavors 1980 [any d’introducció de 3 Punters].

Càrrega de dades:

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

Impressió de columnes:

imprimir (df.columns)

Sortida:

['_c0', 'jugador', 'pos', 'edat', 'equip_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']

Ordenació de jugadors (OrderBy) i toPandas:

Aquí estem ordenant els jugadors en funció del punt aconseguit en una temporada.

df.orderBy ('pts', ascendent = Fals) .limit (10) .toPandas () [['any', 'jugador', 'edat', 'pts', 'fg3']]

Sortida:

Utilitzant DSL i matplotlib:

Aquí analitzem el nombre mitjà de Intents de 3 punts per a cada temporada en un límit de temps de 36 min [un interval corresponent a un joc aproximat de la NBA complet amb un descans adequat]. Calculem aquesta mètrica utilitzant el nombre d’intents de gol de camp de 3 punts (fg3a) i els minuts jugats (mp) i després dibuixem el resultat utilitzant matlplotlib .

des de pyspark.sql.functions import col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}) .select (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')) .orderBy ('yr') from matplotlib import pyplot as plt import seaborn as sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Any') _ = plt.title ('Mitjana del jugador') Intents de 3 punts (per 36 minuts) ') plt.annotate (' 3 punter introduït ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' gris) ', shrink = 0, linewidth = 2)) plt.annotate (' NBA es va moure en una línia de 3 punts ', xy = (1996, 2.4), xytext = (1991.5, 2.7), mida de la font = 9, arrowprops = dict (facecolor = 'gris', encongit = 0, ample de línia = 2)) plt.annotate ('NBA va tornar a la línia de 3 punts', xy = (1998, 2.), xytext = (1998.5, 2.4), mida de la lletra = 9, puntes de fletxa = dict (facecolor = 'gris', encongit = 0, ample de línia = 2))

Sortida:

Regressió lineal i VectorAssembler:

Podem ajustar un model de regressió lineal a aquesta corba per modelar el nombre d'intents de tir durant els propers 5 anys. Hem de transformar les nostres dades mitjançant la funció VectorAssembler en una sola columna. Això és un requisit per a l'API de regressió lineal a MLlib.

quin és el marc de primavera
des de pyspark.ml.feature import VectorAssembler t = VectorAssembler (inputCols = ['any'], outputCol = 'característiques') training = t.transform (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) training.toPandas (). head ()

Sortida:

Model d'edifici:

A continuació, construïm el nostre objecte model de regressió lineal utilitzant les nostres dades transformades.

des de pyspark.ml.regression importació LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (formació)

Aplicació del model format al conjunt de dades:

Apliquem el nostre model d’objectes capacitats al nostre conjunt d’entrenament original juntament amb cinc anys de dades futures

des de pyspark.sql.types importar la fila # aplicar el model per a la temporada 1979-80 a la temporada 2020-21 training_yrs = training.select ('any'). 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 # built testing DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (fila) .toDF ()) # aplicar el model de regressió lineal df_results = model.transform (all_years_features) .toPandas ()

Representació de la predicció final:

A continuació, podem representar els nostres resultats i desar el gràfic en una ubicació especificada.

plt.plot (df_results.yr, df_results.prediction, ample de línia = 2, estil lineal = '-', color = '# 224df7', label = 'Fit L2') plt.plot (training_yrs, training_y, color = '# f08080 ', label = None) plt.xlabel (' Any ') plt.ylabel (' Nombre d'intents ') plt.legend (loc = 4) _ = plt.title (' Intents mitjans del jugador de 3 punts (per 36 minuts) ') plt.tight_layout () plt.savefig (' / home / edureka / Descàrregues / Imatges / REGRESSION.png ')

Sortida:

I amb aquest gràfic, arribem al final d’aquest bloc de tutorial de PySpark.

Així és això, nois!

Espero que tingueu una idea de què és PySpark, per què Python és el més adequat per a Spark, els RDD i un cop d’ull a l’aprenentatge automàtic amb Pyspark en aquest bloc Tutorial de PySpark. Enhorabona, ja no sou un principiant de PySpark. Si voleu obtenir més informació sobre PySpark i conèixer els diferents casos d’ús de la indústria, consulteu els nostres Spark amb Python Blog.

Ara que ja heu entès què és Pyspark, consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. Edureka’s Formació de certificació Python Spark mitjançant PySpark està dissenyat per proporcionar-vos els coneixements i habilitats necessaris per convertir-vos en un desenvolupador Spark amb èxit amb Python i preparar-vos per a l'examen de certificació Cloudera Hadoop i Spark Developer (CCA175).