Introducción a Spark con Python - PySpark para principiantes



Apache Spark se ha apoderado del mundo de Big Data & Analytics y Python es uno de los lenguajes de programación más accesibles que se utilizan en la industria en la actualidad. Entonces, aquí en este blog, aprenderemos sobre Pyspark (chispa con python) para obtener lo mejor de ambos mundos.

es uno de los frameworks más utilizados cuando se trata de manejar y trabajar con Big Data Y Pitón es uno de los lenguajes de programación más utilizados para análisis de datos, aprendizaje automático y mucho más. Entonces, ¿por qué no usarlos juntos? Aquí es donde Spark con Python también conocido como PySpark entra enlaimagen.

Con un salario promedio de $ 110,000 por año para un desarrollador de Apache Spark, no hay duda de que Spark se usa mucho en la industria. Porquesusconjunto de bibliotecas enriquecido, Python es utilizado porlamayoría de los científicos de datos y expertos en análisis de hoy La integración de Python con Spark fue un gran regalo para la comunidad. Spark se desarrolló en lenguaje Scala, que es muy similar a Java. Compila el código del programa en bytecode para la JVM para el procesamiento de Spark Big Data. Para admitir Spark con python, la comunidad de Apache Spark lanzó PySpark.Desde entonces, ha sido conocido por ser una de las habilidades más buscadas en la industria debido a la amplia gama de beneficios que se obtienen después de combinar lo mejor de ambos mundos.En este blog de Spark con Python, analizaré los siguientes temas.





Introducción a Apache Spark

Apache Spark es un marco de computación en clúster de código abierto para procesamiento en tiempo real desarrollado por Apache Software Foundation. Spark proporciona una interfaz para programar clústeres completos con paralelismo de datos y Tolerancia a fallos.



A continuación se muestran algunas de las características de Apache Spark que le dan una ventaja sobre otros marcos:

Funciones de Spark - Spark con Python - Edureka

  • Velocidad: Es 100 veces más rápido que los marcos tradicionales de procesamiento de datos a gran escala.
  • Potente almacenamiento en caché: La capa de programación simple proporciona potentes capacidades de almacenamiento en caché y persistencia en disco.
  • Despliegue: Se puede implementar a través de Mesos, Hadoop a través de Yarn o el propio administrador de clústeres de Spark.
  • Tiempo real: Tiempo realcomputación y baja latencia debido a la computación en memoria.
  • Polígloto: Es uno de los mas importantesCaracterísticasde este framework ya que se puede programar en Scala, Java, Python y R.

¿Por qué optar por Python?

Aunque Spark fue diseñado en scala, lo que lo hace casi 10 veces más rápido que Python, pero Scala es más rápido solo cuando el el número de núcleos que se utilizan es menor . Como la mayoría de los análisis y procesos actuales requieren una gran cantidad de núcleos, la ventaja de rendimiento de Scala no es tanta.



Para los programadores, Python es comparativamente más fácil aprender debido a su sintaxis y bibliotecas estándar. Además, es un lenguaje escrito dinámicamente, lo que significa que los RDD pueden contener objetos de varios tipos.

Aunque Scala tiene SparkMLlib no tiene suficientes bibliotecas y herramientas para Machine Learning y NLP propósitos. Además, Scala carece de visualización de datos.

Entrenamiento PySpark | Apache Spark con Python | Edureka

Suscríbete a nuestro canal de youtube para recibir nuevas actualizaciones ..!

Configuración de Spark con Python (PySpark)

Espero que sepan como .Entonces, una vez que haya descomprimido el archivo de chispa, instalado y agregó su ruta a .bashrc archivo, debe escribirfuente .bashrc

exportar 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

Para abrir el shell pyspark, debe escribir el comando./bin/pyspark

Chispa en la industria

Apache Spark debido a sus características asombrosas como procesamiento en memoria , polígloto y procesamiento rápido están siendo utilizados por muchas empresas en todo el mundo para diversos fines en diversas industrias:

Yahoo utiliza Apache Spark por sus capacidades de aprendizaje automático para personalizar sus noticias, páginas web y también para publicidad dirigida. Usan Spark con Python para averiguar qué tipo de noticias: los usuarios están interesados ​​en leer y categorizar las noticias para averiguar qué tipo de usuarios estarían interesados ​​en leer cada categoría de noticias.

TripAdvisor utiliza apache spark para asesorar a millones de viajeros comparando cientos de sitios web para encontrar los mejores precios de hoteles para sus clientes. El tiempo necesario para leer y procesar las reseñas de los hoteles en un formato legible se realiza con la ayuda de Apache Spark.

Una de las plataformas de comercio electrónico más grandes del mundo Alibaba ejecuta algunos de los trabajos de Apache Spark más grandes del mundo para analizar cientos de petabytes de datos en su plataforma de comercio electrónico.

PySpark SparkContext y flujo de datos

Hablando de Spark con Python, trabajar con RDD es posible gracias a la biblioteca Py4j. PySpark Shell vincula la API de Python con el núcleo de chispa e inicializa el contexto de Spark. Contexto de Spark es el corazón de cualquier aplicación de chispas.

  1. El contexto de Spark configura los servicios internos y establece una conexión con un entorno de ejecución de Spark.
  2. El objeto sparkcontext en el programa controlador coordina todo el proceso distribuido y permite la asignación de recursos.
  3. Los administradores de clústeres proporcionan ejecutores, que son procesos de JVM con lógica.
  4. El objeto SparkContext envía la aplicación a los ejecutores.
  5. SparkContext ejecuta tareas en cada ejecutor.

PySpark KDD Use Case

Ahora, echemos un vistazo a un caso de uso de KDD'99 Cup (Concurso internacional de herramientas de minería de datos y descubrimiento de conocimientos).Aquí tomaremos una fracción del conjunto de datos porque el conjunto de datos original es demasiado grande

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

CREANDO RDD:
Ahora podemos usar este archivo para crea nuestro RDD .

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

FILTRACIÓN:

Supongamos que queremos contar cuántos normales. interacciones que tenemos en nuestro conjunto de datos. Podemos filtrar nuestro RDD raw_data de la siguiente manera.

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

CONTAR:

Ahora podemos contar cuántos elementos tenemos en el nuevo RDD.

from time import time t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 print 'Hay {} interacciones' normales '.format (normal_count) print' Cuenta completada en {} segundos'.format (redondo (tt, 3))

Salida:

Hay 97278 interacciones 'normales'. Recuento completado en 5.951 segundos.

CARTOGRAFÍA:

En estocasoqueremos leer nuestro archivo de datos en formato CSV. Podemos hacer esto aplicando una función lambda a cada elemento en el RDD de la siguiente manera. Aquí usaremos el map () y take () transformación.

cómo instalar eclipse ide
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 'Análisis completado en {} segundos '.format (round (tt, 3)) pprint (head_rows [0])

Salida:

Parse completado en 1.715 segundos [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normal. ']

TERRIBLE:

Ahora queremos tener cada elemento en el RDD como un par clave-valor donde la clave es la etiqueta (p. Ej. normal ) y el valor es la lista completa de elementos que representa la fila en el archivo con formato CSV. Podríamos proceder de la siguiente manera. Aquí usamos el line.split () y map ().

def parse_interaction (línea): elems = line.split (',') etiqueta = elems [41] return (etiqueta, elems) key_csv_data = raw_data.map (parse_interaction) head_rows = key_csv_data.take (5) pprint (head_rows [0] )
 Salida: (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. '])

LA ACCIÓN DE RECOGER:

Aquí vamos a utilizar la acción recopilar (). Obtendrá todos los elementos de RDD en la memoria. Por esta razón, debe usarse con cuidado cuando se trabaja con RDD grandes.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Datos recopilados en {} segundos'.format (round (tt, 3))

Salida:

Datos recopilados en 17,927 segundos

Eso tomó más tiempo que cualquier otra acción que usamos antes, por supuesto. Cada nodo trabajador de Spark que tiene un fragmento del RDD debe coordinarse para recuperar su parte y luego reducir todo junto.

Como último ejemplo combinando todo lo anterior, queremos recopilar todos losnormalinteracciones como pares clave-valor.

# obtener datos del archivo data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # analizar en pares clave-valor key_csv_data = raw_data.map (parse_interaction) # filtrar interacciones de clave normales normal_key_interactions = key_csv_data.filter lambda x: x [0] == 'normal.') # recopilar todo t0 = tiempo () all_normal = normal_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) print 'Datos recopilados en {} segundos '.format (round (tt, 3)) print' Hay {} interacciones 'normales' .format (cuenta_normal)

Salida:

Datos recopilados en 12,485 segundos Hay 97278 interacciones normales

¡Así que esto es todo, chicos!

Espero que hayas disfrutado de este blog de Spark con Python. Si está leyendo esto, ¡enhorabuena! Ya no eres un novato en PySpark. Pruebe este sencillo ejemplo en sus sistemas ahora.

Ahora que ha entendido los conceptos básicos de PySpark, consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. Edureka's Capacitación para la certificación de Python Spark con PySpark está diseñado para brindarle los conocimientos y las habilidades que se requieren para convertirse en un desarrollador Spark exitoso con Python y prepararlo para el examen de certificación Cloudera Hadoop y Spark Developer (CCA175).

Tienes una pregunta para nosotros? Menciónalo en la sección de comentarios y nos comunicaremos contigo.