Introduzione a Spark con Python - PySpark per principianti



Apache Spark ha assunto il controllo del mondo dei Big Data e dell'analisi e Python è uno dei linguaggi di programmazione più accessibili utilizzati oggi nel settore. Quindi qui in questo blog, impareremo a conoscere Pyspark (scintilla con Python) per ottenere il meglio da entrambi i mondi.

è uno dei framework più utilizzati quando si tratta di gestire e lavorare con Big Data AND Pitone è uno dei linguaggi di programmazione più utilizzati per l'analisi dei dati, l'apprendimento automatico e molto altro ancora. Quindi, perché non usarli insieme? Qui è dove Spark con Python conosciuto anche come PySpark Vieni dentroilimmagine.

Con uno stipendio medio di $ 110.000 all'anno per uno sviluppatore Apache Spark, non c'è dubbio che Spark sia molto utilizzato nel settore. Per colpa disuoricco set di librerie, Python è usato dailla maggior parte degli esperti di Data Scientist ed Analytics oggi. L'integrazione di Python con Spark è stato un grande dono per la comunità. Spark è stato sviluppato in linguaggio Scala, che è molto simile a Java. Compila il codice del programma in bytecode per la JVM per l'elaborazione dei big data. Per supportare Spark con Python, la comunità di Apache Spark ha rilasciato PySpark.Da allora, è nota per essere una delle competenze più ricercate in tutto il settore a causa dell'ampia gamma di vantaggi derivanti dalla combinazione del meglio di entrambi questi mondi.In questo blog Spark con Python, tratterò i seguenti argomenti.





Introduzione ad Apache Spark

Apache Spark è un framework di elaborazione cluster open source per elaborazione in tempo reale sviluppato da Apache Software Foundation. Spark fornisce un'interfaccia per programmare interi cluster con implicit parallelismo dei dati e tolleranza agli errori.



Di seguito sono riportate alcune delle funzionalità di Apache Spark che gli conferiscono un vantaggio rispetto ad altri framework:

Caratteristiche di Spark - Spark con Python - Edureka

  • 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: Tempo realecalcolo e bassa latenza a causa del calcolo in memoria.
  • Poliglotta: È uno dei più importantiCaratteristichedi questo framework in quanto può essere programmato in Scala, Java, Python e R.

Perché scegliere Python?

Sebbene Spark sia stato progettato in scala, il che lo rende quasi 10 volte più veloce di Python, ma Scala è più veloce solo quando il il numero di core utilizzati è inferiore . Poiché la maggior parte dell'analisi e del processo oggigiorno richiedono un gran numero di core, il vantaggio in termini di prestazioni di Scala non è così tanto.



qual è la differenza tra una classe e un'interfaccia

Per i programmatori Python è relativamente più facile imparare a causa della sua sintassi e delle librerie standard. Inoltre, è un linguaggio digitato dinamicamente, il che significa che gli RDD possono contenere oggetti di più tipi.

Sebbene Scala abbia SparkMLlib non ha abbastanza librerie e strumenti per Machine Learning e NLP scopi. Inoltre, Scala manca di Data Visualization.

Formazione PySpark | Apache Spark con Python | Edureka

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

Configurazione di Spark con Python (PySpark)

Spero che voi ragazzi sappiate come farlo .Quindi, una volta che hai decompresso il file spark, installato e ha aggiunto il percorso a .bashrc file, è necessario digitarefonte .bashrc

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

Per aprire la shell pyspark è necessario digitare il comando./bin/pyspark

Spark nell'industria

Apache Spark grazie alle sue straordinarie funzionalità come elaborazione in memoria , poliglotta e elaborazione veloce vengono utilizzati da molte aziende in tutto il mondo per vari scopi in vari settori:

Yahoo utilizza Apache Spark per le sue capacità di Machine Learning per personalizzare le sue notizie, le pagine web e anche per la pubblicità mirata. Usano Spark con Python per scoprire che tipo di notizie: gli utenti sono interessati a leggere e classificare le notizie per scoprire che tipo di utenti sarebbero interessati a leggere ogni categoria di notizie.

TripAdvisor utilizza apache spark per fornire consigli a milioni di viaggiatori confrontando centinaia di siti web per trovare i migliori prezzi degli hotel per i propri clienti. Il tempo necessario per leggere ed elaborare le recensioni degli hotel in un formato leggibile viene effettuato con l'aiuto di Apache Spark.

Una delle più grandi piattaforme di e-commerce al mondo Alibaba esegue alcuni dei più grandi lavori Apache Spark al mondo per analizzare centinaia di petabyte di dati sulla sua piattaforma di e-commerce.

PySpark SparkContext e flusso di dati

Parlando di Spark con Python, lavorare con RDD è reso possibile dalla libreria Py4j. PySpark Shell collega l'API Python a Spark core e inizializza il contesto Spark. Spark Context è il cuore di qualsiasi applicazione Spark.

  1. Il contesto Spark configura i servizi interni e stabilisce una connessione a un ambiente di esecuzione Spark.
  2. L'oggetto sparkcontext nel programma driver coordina tutto il processo distribuito e consente l'allocazione delle risorse.
  3. I gestori cluster forniscono gli esecutori, che sono processi JVM con logica.
  4. L'oggetto SparkContext invia l'applicazione agli esecutori.
  5. SparkContext esegue attività in ogni esecutore.

Caso d'uso PySpark KDD

Ora diamo un'occhiata a un caso d'uso di Coppa KDD'99 (Concorso internazionale di strumenti per la scoperta della conoscenza e il data mining).Qui prenderemo una frazione del set di dati perché il set di dati originale è troppo grande

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

CREAZIONE DI RDD:
Ora possiamo usare questo file per crea il nostro RDD .

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

FILTRAGGIO:

Supponiamo di voler contare quanti sono normali. interazioni che abbiamo nel nostro set di dati. Noi possiamo filtro il nostro RDD raw_data come segue.

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

CONTARE:

Adesso possiamo contare quanti elementi abbiamo nel nuovo RDD.

from time import time t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 print 'Ci sono {}' normali 'interazioni'.format (normal_count) print' Conteggio completato in {} secondi'.format (round (tt, 3))

Produzione:

Ci sono 97278 interazioni 'normali' Count completato in 5,951 secondi

MAPPATURA:

In questoAstucciovogliamo leggere il nostro file di dati in formato CSV. Possiamo farlo applicando una funzione lambda a ogni elemento nell'RDD come segue. Qui useremo il file trasformazione map () e take ().

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 'Analisi completata in {} secondi '.format (round (tt, 3)) pprint (head_rows [0])

Produzione:

Analisi completata in 1,715 secondi [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normal. ']

SPACCO:

Ora vogliamo avere ogni elemento nell'RDD come coppia chiave-valore in cui la chiave è il tag (ad es. normale ) e il valore è l'intero elenco di elementi che rappresenta la riga nel file formattato CSV. Potremmo procedere come segue. Qui usiamo il line.split () e 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] )
 Produzione: (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. '])

L'AZIONE DI RACCOLTA:

Qui useremo l'azione collect (). Otterrà tutti gli elementi di RDD in memoria. Per questo motivo, deve essere utilizzato con cautela quando si lavora con RDD di grandi dimensioni.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Dati raccolti in {} secondi'.format (round (tt, 3))

Produzione:

Dati raccolti in 17,927 secondi

Ovviamente ci è voluto più tempo rispetto a qualsiasi altra azione che abbiamo usato prima. Ogni nodo di lavoro Spark che ha un frammento di RDD deve essere coordinato per recuperare la sua parte e quindi ridurre tutto insieme.

Come ultimo esempio combinando tutti i precedenti, vogliamo raccogliere tutti i filenormaleinterazioni come coppie chiave-valore.

# recupera i dati dal file data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # analizza le coppie chiave-valore key_csv_data = raw_data.map (parse_interaction) # filtra le normali interazioni chiave 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 'Dati raccolti in {} secondi '.format (round (tt, 3)) print' Ci sono {} interazioni 'normali'.format (normal_count)

Produzione:

Dati raccolti in 12,485 secondi Ci sono 97278 interazioni normali

Quindi è questo, ragazzi!

Spero che questo blog Spark con Python ti sia piaciuto. Se stai leggendo questo, Congratulazioni! Non sei più un principiante di PySpark. Prova ora questo semplice esempio sui tuoi sistemi.

Ora che hai compreso le basi di 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).

Hai domande per noi? Per favore menzionalo nella sezione commenti e ti risponderemo.