Tutorial PySpark - Impara Apache Spark usando Python



In questo blog sul tutorial di PySpark, imparerai a conoscere l'API PSpark che viene utilizzata per lavorare con Apache Spark utilizzando il linguaggio di programmazione Python.

In un mondo in cui i dati vengono generati a una velocità così allarmante, la corretta analisi di quei dati al momento giusto è molto utile. Uno dei framework più sorprendenti per gestire i big data in tempo reale ed eseguire analisi è Apache Spark.Insieme, o PySpark è uno dei corsi di certificazione più ambiti, che dà a Scala for Spark una corsa per i suoi soldi. Quindi in questo Tutorial di PySpark blog, tratterò i seguenti argomenti:





Tutorial PySpark: che cos'è PySpark?

Apache Spark è un framework di elaborazione cluster veloce utilizzato per l'elaborazione, l'interrogazione e l'analisi dei Big Data. Essendo basato sul calcolo in memoria, ha un vantaggio rispetto a molti altri framework di big data.

Caratteristiche di PySpark - Tutorial PySpark - Edureka



Scritto originariamente in Scala Programming Language, la comunità open source ha sviluppato uno straordinario strumento per supportare Python per Apache Spark. PySpark aiuta i data scientist a interfacciarsi con gli RDD in Apache Spark e Python attraverso la sua libreria Py4j. Ci sono molte caratteristiche che rendono PySpark un framework migliore di altri:

  • Velocità: È 100 volte più veloce dei tradizionali framework di elaborazione dati su larga scala
  • Potente cache: Il livello di programmazione semplice fornisce potenti capacità di memorizzazione nella cache e di persistenza del disco
  • Distribuzione: Può essere distribuito tramite Mesos, Hadoop tramite Yarn o il cluster manager di Spark
  • Tempo reale: Calcolo in tempo reale e bassa latenza grazie al calcolo in memoria
  • Poliglotta: Supporta la programmazione in Scala, Java, Python e R

Andiamo avanti con il nostro blog tutorial di PySpark e vediamo dove viene utilizzato Spark nel settore.

PySpark nell'industria

Ogni settore ruota intorno ai Big Data e dove ci sono Big Data è coinvolta l'analisi. Quindi diamo un'occhiata ai vari settori in cui viene utilizzato Apache Spark.



Metà è uno dei più grandi settori in crescita verso lo streaming online. Netflix utilizza Apache Spark per l'elaborazione del flusso in tempo reale per fornire consigli online personalizzati ai propri clienti. Elabora 450 miliardi eventi al giorno che fluiscono alle applicazioni lato server.

Finanza è un altro settore in cui l'elaborazione in tempo reale di Apache Spark gioca un ruolo importante. Le banche utilizzano Spark per accedere e analizzare i profili dei social media, per ottenere approfondimenti che possono aiutarli a prendere le giuste decisioni di business per valutazione del rischio di credito , annunci mirati e segmentazione della clientela. Fidelizzazione dei clienti viene ridotto anche utilizzando Spark. Intercettazione di una frode è una delle aree più utilizzate del Machine Learning in cui è coinvolto Spark.

Assistenza sanitaria i provider utilizzano Apache Spark per Analizza i record dei pazienti insieme ai dati clinici del passato per identificare quali pazienti potrebbero affrontare problemi di salute dopo essere stati dimessi dalla clinica. Apache Spark viene utilizzato in Sequenziamento genomico ridurre il tempo necessario per elaborare i dati del genoma.

Vendita al dettaglio ed e-commerce è un settore in cui non si può immaginare che funzioni senza l'utilizzo di analisi e pubblicità mirata. Una delle più grandi piattaforme di e-commerce oggi Alibaba esegue alcuni dei più grandi lavori Spark al mondo per analizzare petabyte di dati. Alibaba si esibisce estrazione delle caratteristiche nei dati dell'immagine. eBay utilizza Apache Spark per fornire Offerte mirate , migliorare l'esperienza del cliente e ottimizzare le prestazioni complessive.

Viaggio Le industrie utilizzano anche Apache Spark. TripAdvisor , un sito Web di viaggi leader che aiuta gli utenti a pianificare un viaggio perfetto utilizza Apache Spark per velocizzarlo consigli personalizzati dei clienti .TripAdvisor utilizza Apache Spark per fornire consigli a milioni di viaggiatori confrontando centinaia di siti web per trovare i migliori prezzi di hotel per i propri clienti.

Un aspetto importante di questo tutorial di PySpark è capire perché abbiamo bisogno di Python? Perché non Java, Scala o R?

Iscriviti al nostro canale youtube per ricevere nuovi aggiornamenti ..!


Perché scegliere Python?

Facile da imparare: Per i programmatori Python è relativamente più facile da imparare grazie alla sua sintassi e alle librerie standard. Inoltre, è un linguaggio tipizzato dinamicamente, il che significa che gli RDD possono contenere oggetti di più tipi.

digita casting in java con esempio

Un vasto insieme di biblioteche: Scala non dispone di strumenti e librerie di data science sufficienti come Python per l'apprendimento automatico e l'elaborazione del linguaggio naturale. Inoltre, Scala manca di una buona visualizzazione e di trasformazioni dei dati locali.

Enorme supporto della comunità: Python ha una comunità globale con milioni di sviluppatori che interagiscono online e offline in migliaia di posizioni virtuali e fisiche.

Uno degli argomenti più importanti in questo tutorial di PySpark è l'uso degli RDD. Capiamo cosa sono gli RDD

Spark RDD

Quando si tratta di elaborazione distribuita iterativa, ovvero elaborazione di dati su più lavori nei calcoli, è necessario riutilizzare o condividere i dati tra più lavori. Framework precedenti come Hadoop avevano problemi durante la gestione di più operazioni / lavori come

cos'è un deadlock in java
  • Archiviazione dei dati in una memoria intermedia come HDFS
  • Più lavori di I / O rallentano i calcoli
  • Repliche e serializzazioni che a loro volta rendono il processo ancora più lento

Gli RDD cercano di risolvere tutti i problemi abilitando calcoli in memoria distribuiti tolleranti ai guasti. RDD è l'abbreviazione di Set di dati distribuiti resilienti. RDD è un'astrazione della memoria distribuita che consente ai programmatori di eseguire calcoli in memoria su cluster di grandi dimensioni in modo tollerante ai guasti. Loro sono il raccolta di oggetti di sola lettura partizionato su un insieme di macchine che possono essere ricostruite in caso di perdita di una partizione. Esistono diverse operazioni eseguite sugli RDD:

  • Trasformazioni: Le trasformazioni creano un nuovo set di dati da uno esistente. Valutazione pigra
  • Azioni: Spark forza l'esecuzione dei calcoli solo quando le azioni vengono richiamate sugli RDD

Comprendiamo alcune trasformazioni, azioni e funzioni

Lettura di un file e visualizzazione dei primi n elementi:

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

Produzione:

[La deforestazione sta sorgendo come la principale questione ambientale e sociale che ora ha assunto la forma di qualcosa di più di un potente demone. ', u'Dobbiamo conoscere le cause, gli effetti e i modi per risolvere i problemi sorti a causa della deforestazione. ', u'Abbiamo fornito molti paragrafi, saggi lunghi e brevi sulla deforestazione al fine di aiutare i vostri figli e bambini a prendere coscienza del problema e partecipare al concorso di scrittura di saggi a scuola o fuori dalla scuola. ', u'È possibile selezionare qualsiasi saggio sulla deforestazione fornito di seguito in base allo standard di classe. ', u'La deforestazione sta sorgendo come il principale problema globale per la società e l'ambiente.']

Conversione in minuscolo e divisione: (inferiore e diviso)

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

Produzione:

[[u'deforestation ', u'is', u'arising ', u'as', u'the ', u'main', u'environmental ', u'and', u'social ', u'issue ', u'che', u'ha ', u'now', u'haken ', ...... . . ]

Rimozione di stopword: (Filtro)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'I', 'I'd', 'why', 'with'] rdd2 = rdd1.filter (lambda z: z non in stop_words) rdd2.take (10)

Produzione:

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

Somma di numeri da 1 a 500: (Riduci)

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

Produzione:

124750

Apprendimento automatico con PySpark

Continuando il nostro blog tutorial su PySpark, analizziamo alcuni dati di BasketBall e facciamo alcune previsioni future. Quindi, qui utilizzeremo i dati del basket di tutti i giocatori dell'NBA da allora 1980 [anno di introduzione di 3 puntatori].

Caricamento dati:

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

Colonne di stampa:

print (df.columns)

Produzione:

['_c0', 'player', 'pos', 'age', 'team_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']

Ordinamento dei giocatori (OrderBy) e toPandas:

Qui stiamo ordinando i giocatori in base al punto segnato in una stagione.

df.orderBy ('pts', ascending = False) .limit (10) .toPandas () [['yr', 'player', 'age', 'pts', 'fg3']]

Produzione:

Utilizzando DSL e matplotlib:

Qui stiamo analizzando il numero medio di 3 tentativi di punto per ogni stagione in un limite di tempo di 36 min [un intervallo corrispondente a una partita NBA completa approssimativa con riposo adeguato]. Calcoliamo questa metrica utilizzando il numero di tentativi di tiro da 3 punti (fg3a) e i minuti giocati (mp), quindi tracciamo il risultato utilizzando matlplotlib .

from 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') da matplotlib importa pyplot come plt importa seaborn come sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Year') _ = plt.title ('Player average Tentativi in ​​3 punti (per 36 minuti) ') plt.annotate (' 3 puntatori introdotti ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' gray ', shrink = 0, linewidth = 2)) plt.annotate (' NBA spostato su una linea di 3 punti ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'grigio', restringimento = 0, larghezza riga = 2)) plt.annotate ('NBA spostato indietro di 3 punti linea', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dict (facecolor = 'gray', shrink = 0, linewidth = 2))

Produzione:

Regressione lineare e VectorAssembler:

Possiamo adattare un modello di regressione lineare a questa curva per modellare il numero di tentativi di tiro per i prossimi 5 anni. Dobbiamo trasformare i nostri dati utilizzando la funzione VectorAssembler in una singola colonna. Questo è un Requisiti per l'API di regressione lineare in MLlib.

from pyspark.ml.feature import VectorAssembler t = VectorAssembler (inputCols = ['yr'], outputCol = 'features') training = t.transform (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) training.toPandas (). head ()

Produzione:

Modello di costruzione:

Quindi costruiamo il nostro oggetto modello di regressione lineare utilizzando i nostri dati trasformati.

from pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (training)

Applicazione del modello addestrato al set di dati:

Applichiamo il nostro modello a oggetti del modello addestrato al nostro set di addestramento originale insieme a 5 anni di dati futuri

from pyspark.sql.types import Row # apply model for the 1979-80 season through 2020-21 season training_yrs = training.select ('yr'). 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 (row) .toDF ()) # applica il modello di regressione lineare df_results = model.transform (all_years_features) .toPandas ()

Tracciare la previsione finale:

Possiamo quindi tracciare i nostri risultati e salvare il grafico in una posizione specificata.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', label = Nessuno) plt.xlabel (' Anno ') plt.ylabel (' Numero di tentativi ') plt.legend (loc = 4) _ = plt.title (' Media dei tentativi da 3 punti del giocatore (per 36 minuti) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Produzione:

tutorial spring mvc per principianti

E con questo grafico, arriviamo alla fine di questo blog tutorial di PySpark.

Quindi è questo, ragazzi!

Spero che abbiate un'idea di cosa sia PySpark, perché Python è più adatto per Spark, gli RDD e un assaggio di Machine Learning con Pyspark in questo blog tutorial di PySpark. Congratulazioni, non sei più un principiante di PySpark. Se vuoi saperne di più su PySpark e comprendere i diversi casi d'uso del settore, dai un'occhiata al nostro Spark con Python Blog.

Ora che hai capito cos'è Pyspark, controlla il file da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Edureka's Formazione sulla certificazione Python Spark con PySpark è progettato per fornirti le conoscenze e le competenze necessarie per diventare uno sviluppatore Spark di successo utilizzando Python e prepararti per l'esame di certificazione Cloudera Hadoop e Spark Developer (CCA175).