Introducció a Spark amb Python - PySpark per a principiants



Apache Spark s’ha apoderat del món Big Data & Analytics i Python és un dels llenguatges de programació més accessibles que s’utilitzen a la indústria actualment. Així doncs, aquí, en aquest bloc, coneixerem Pyspark (spark with python) per treure el millor d’ambdós mons.

és un dels marcs més utilitzats a l’hora de tractar i treballar amb Big Data AND Python és un dels llenguatges de programació més utilitzats per a l'anàlisi de dades, l'aprenentatge automàtic i molt més. Per què no els utilitzeu junts? Aquí és on Spark amb Python també conegut com PySpark entraelimatge.

Amb un salari mitjà de 110.000 dòlars anuals per a un desenvolupador d’Apache Spark, no hi ha dubte que Spark s’utilitza molt a la indústria. Per culpa dela sevarich library set, Python és utilitzat perella majoria de científics en dades i experts en Analytics actuals. La integració de Python amb Spark va ser un regal important per a la comunitat. Spark es va desenvolupar en llenguatge Scala, que és molt similar a Java. Compila el codi del programa en bytecode per a la JVM per al processament de dades grans. Per donar suport a Spark amb python, la comunitat Apache Spark va llançar PySpark.Des de llavors, Se sap que és una de les habilitats més sol·licitades de tota la indústria a causa de l’àmplia gamma de beneficis que es van obtenir després de combinar el millor d’aquests dos mons.En aquest bloc de Spark with Python, parlaré dels temes següents.





Introducció a Apache Spark

Apache Spark és un marc d’informàtica de clúster de codi obert per a processament en temps real desenvolupat per l’Apache Software Foundation. Spark proporciona una interfície per programar clústers sencers implícits paral·lelisme de dades i falta de tolerància.



A continuació es mostren algunes de les funcions d’Apache Spark, que li aporta un avantatge respecte a altres frameworks:

Funcions d’espurna - Spark amb Python - Edureka

  • 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ó senzilla proporciona potents funcions de memòria cau i persistència del disc.
  • Desplegament: Es pot desplegar a través de Mesos, Hadoop mitjançant Yarn o el propi gestor de clústers de Spark.
  • Temps real: Temps realcàlcul i baixa latència a causa del càlcul a la memòria.
  • Políglota: És un dels més importantscaracterístiquesd’aquest marc ja que es pot programar a Scala, Java, Python i R.

Per què anar per Python?

Tot i que Spark va ser dissenyat en scala, cosa que el fa gairebé deu vegades més ràpid que Python, però Scala és més ràpid només quan el nombre de nuclis que s’utilitzen és menor . Com que la majoria d’anàlisis i processos requereixen avui en dia un gran nombre de nuclis, l’avantatge de rendiment d’Scala no és tant.



Per als programadors és Python comparativament més fàcil aprendre a causa de la seva sintaxi i biblioteques estàndard. A més, és un llenguatge mecanografiat dinàmicament, el que significa que els RDD poden contenir objectes de diversos tipus.

Tot i que Scala ho ha fet SparkMLlib no té hi ha prou biblioteques i eines per a l'aprenentatge automàtic i el PNL finalitats. A més, Scala no té visualització de dades.

Formació PySpark | Apache Spark amb Python | Edureka

Subscriviu-vos al nostre canal de youtube per obtenir noves actualitzacions ...!

Configuració de Spark amb Python (PySpark)

Espero que ho sabeu .Per tant, un cop ho hàgiu fet descomprimit el fitxer espurna, instal·lat i va afegir el seu camí cap a .bashrc , heu d’escriurefont .bashrc

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

Per obrir l'intèrpret d'ordres de pyspark, heu d'escriure l'ordre./bin/pyspark

Espurna a la indústria

Apache Spark per les seves funcions increïbles, com ara processament en memòria , políglota i processament ràpid són utilitzades per moltes empreses de tot el món per a diversos propòsits en diverses indústries:

Yahoo utilitza Apache Spark per a les seves capacitats d’aprenentatge automàtic per personalitzar les seves notícies, pàgines web i també per a publicitat objectiu. Utilitzen Spark amb python per esbrinar quin tipus de notícies: els usuaris estan interessats en llegir i classificar les notícies per esbrinar quin tipus d’usuaris estarien interessats en llegir cada categoria de notícies.

TripAdvisor utilitza apache spark per proporcionar consells a milions de viatgers en comparar centenars de llocs web per trobar els millors preus d’hotels per als seus clients. El temps que es triga a llegir i processar les ressenyes dels hotels en un format llegible es fa amb l’ajuda d’Apache Spark.

Una de les plataformes de comerç electrònic més grans del món Alibaba gestiona algunes de les feines d'Apache Spark més grans del món per analitzar centenars de petabytes de dades a la seva plataforma de comerç electrònic.

PySpark SparkContext i Flux de dades

Parlar de Spark amb Python, treballar amb RDDs és possible gràcies a la biblioteca Py4j. PySpark Shell enllaça l'API Python per generar nucli i inicialitza el context Spark. Context de l’espurna és el cor de qualsevol aplicació d’espurna.

  1. Spark context configura serveis interns i estableix una connexió a un entorn d'execució de Spark.
  2. L'objecte sparkcontext del programa controlador coordina tot el procés distribuït i permet l'assignació de recursos.
  3. Els administradors de clústers proporcionen als executors, que són processos JVM amb lògica.
  4. L'objecte SparkContext envia l'aplicació als executors.
  5. SparkContext executa tasques a cada executor.

PySpark KDD Use Case

Vegem ara un cas d’ús de KDD’99 Cup (Concurs internacional d’eines de descobriment de coneixement i extracció de dades).Aquí agafarem una fracció del conjunt de dades perquè el conjunt de dades original és massa gran

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

CREANT RDD:
Ara podem utilitzar aquest fitxer per crea el nostre RDD .

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

FILTRATGE:

Suposem que volem comptar quantes normals. interaccions que tenim al nostre conjunt de dades. Podem filtre el nostre RDD de dades crues de la següent manera.

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

COMPTE:

Ara podem comptar quants elements tenim al nou RDD.

a partir del temps temps d'importació t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 imprimeix 'Hi ha {} interaccions' normals '. format (normal_count) imprimeix' Compte completat en {} segons '. format (rodó (tt, 3))

Sortida:

Hi ha 97278 recompte d'interaccions 'normals' completat en 5.951 segons

CARTOGRAFIA:

En aquestCaixavolem llegir el nostre fitxer de dades en format CSV. Ho podem fer aplicant una funció lambda a cada element del RDD de la següent manera. Aquí utilitzarem el fitxer transformació map () i take ().

des d'importació pprint pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Parse completat en {} segons '.format (round (tt, 3)) pprint (head_rows [0])

Sortida:

L'anàlisi s'ha completat en 1.715 segons [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . no és normal. ']

DIVISIÓ:

Ara volem que cada element del RDD sigui un parell clau-valor on la clau sigui l’etiqueta (per exemple, normal ) i el valor és la llista completa d'elements que representa la fila del fitxer formatat CSV. Podríem procedir de la següent manera. Aquí fem servir el fitxer line.split () i 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] )
 Sortida: (u'normal. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0,00 ', u'1,00', .... Normalment. '])

L’ACCIÓ RECOLLIDA:

Aquí utilitzarem l'acció collect (). Aconseguirà tots els elements de RDD a la memòria. Per aquest motiu, s’ha d’utilitzar amb cura quan es treballa amb RDD grans.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 imprimeix 'Dades recopilades en {} segons'. format (round (tt, 3))

Sortida:

Dades recollides en 17.927 segons

Això va trigar més temps que qualsevol altra acció que utilitzàvem abans, és clar. Cal coordinar tots els nodes de treball de Spark que tinguin un fragment del RDD per recuperar la seva part i després reduir-ho tot junt.

Com a darrer exemple que combina tots els anteriors, volem recollir tots els fitxersnormalles interaccions com a parells clau-valor.

passa per valor i passa per referència a java
# obtenir dades del fitxer data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # analitzar en parells clau-valor key_csv_data = raw_data.map (parse_interaction) # filtre interaccions clau normals 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 'Dades recollides en {} segons '.format (round (tt, 3)) print' Hi ha {} interaccions 'normals' .format (normal_count)

Sortida:

Dades recollides en 12.485 segons Hi ha 97278 interaccions normals

Així és això, nois!

Espero que us hagi agradat aquest blog Spark with Python. Si esteu llegint això, enhorabona! Ja no sou un principiant de PySpark. Proveu aquest senzill exemple als vostres sistemes ara.

Ara que heu entès els conceptes bàsics de PySpark, consulteu el fitxer 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. D’Edureka 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).

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondrem.