En un mundo donde los datos se generan a un ritmo tan alarmante, el análisis correcto de esos datos en el momento correcto es muy útil. Uno de los marcos más sorprendentes para manejar big data en tiempo real y realizar análisis es Apache Spark.Juntos, o PySpark es uno de los cursos de certificación más solicitados, lo que le da a Scala for Spark una carrera por su dinero. Entonces en esto PySpark Tutorial blog, discutiré los siguientes temas:
- ¿Qué es PySpark?
- PySpark en la industria
- ¿Por qué optar por Python?
- Spark RDD
- Aprendizaje automático con PySpark
Tutorial de PySpark: ¿Qué es PySpark?
Apache Spark es un marco de computación en clúster rápido que se utiliza para procesar, consultar y analizar Big Data. Al estar basado en el cálculo en memoria, tiene una ventaja sobre varios otros marcos de big data.
Escrito originalmente en el lenguaje de programación Scala, la comunidad de código abierto ha desarrollado una herramienta increíble para admitir Python para Apache Spark. PySpark ayuda a los científicos de datos a interactuar con RDD en Apache Spark y Python a través de su biblioteca Py4j. Hay muchas características que hacen de PySpark un marco mejor que otros:
- 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 de 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: Cálculo en tiempo real y baja latencia debido al cálculo en memoria
- Polígloto: Soporta programación en Scala, Java, Python y R
Sigamos adelante con nuestro blog de tutoriales de PySpark y veamos dónde se usa Spark en la industria.
PySpark en la industria
Cada industria gira en torno a Big Data y donde hay Big Data, hay un análisis involucrado. Así que echemos un vistazo a las diversas industrias en las que se utiliza Apache Spark.
Media es una de las industrias con mayor crecimiento hacia la transmisión en línea. Netflix utiliza Apache Spark para el procesamiento de transmisiones en tiempo real para brindar recomendaciones personalizadas en línea a sus clientes. Procesa 450 mil millones eventos por día que fluyen a las aplicaciones del lado del servidor.
Finanzas es otro sector en el que el procesamiento en tiempo real de Apache Spark juega un papel importante. Los bancos están utilizando Spark para acceder y analizar los perfiles de redes sociales, para obtener información que pueda ayudarlos a tomar decisiones comerciales correctas para evaluación del riesgo crediticio , anuncios dirigidos y segmentación de clientes. Rotación de clientes también se reduce con Spark. Detección de fraudes es una de las áreas de aprendizaje automático más utilizadas en la que participa Spark.
Cuidado de la salud los proveedores utilizan Apache Spark para Analizar registros de pacientes junto con datos clínicos pasados para identificar qué pacientes tienen probabilidades de enfrentar problemas de salud después de ser dados de alta de la clínica. Apache Spark se utiliza en Secuenciación genómica para reducir el tiempo necesario para procesar los datos del genoma.
Minorista y comercio electrónico es una industria en la que uno no puede imaginar que funcione sin el uso de análisis y publicidad dirigida. Una de las plataformas de comercio electrónico más grandes de la actualidad Alibaba ejecuta algunos de los trabajos de Spark más grandes del mundo para analizar petabytes de datos. Alibaba realiza extracción de características en datos de imagen. eBay utiliza Apache Spark para proporcionar Ofertas dirigidas , mejorar la experiencia del cliente y optimizar el rendimiento general.
Viaje Las industrias también utilizan Apache Spark. TripAdvisor , un sitio web de viajes líder que ayuda a los usuarios a planificar un viaje perfecto utiliza Apache Spark para acelerar su recomendaciones personalizadas de clientes .TripAdvisor utiliza Apache Spark para brindar consejos a millones de viajeros al comparando cientos de sitios web para encontrar los mejores precios de hotel para sus clientes.
doble a int en java
Un aspecto importante de este Tutorial de PySpark es entender por qué debemos optar por Python. ¿Por qué no Java, Scala o R?
Suscríbete a nuestro canal de youtube para recibir nuevas actualizaciones ..!
¿Por qué optar por Python?
Fácil de aprender: Para los programadores, Python es comparativamente más fácil de aprender debido a su sintaxis y bibliotecas estándar. Además, es un lenguaje escrito de forma dinámica, lo que significa que los RDD pueden contener objetos de varios tipos.
Un vasto conjunto de bibliotecas: Scala no tiene suficientes herramientas y bibliotecas de ciencia de datos como Python para el aprendizaje automático y el procesamiento del lenguaje natural. Además, Scala carece de una buena visualización y de transformaciones de datos locales.
Gran apoyo de la comunidad: Python tiene una comunidad global con millones de desarrolladores que interactúan en línea y fuera de línea en miles de ubicaciones virtuales y físicas.
Uno de los temas más importantes de este tutorial de PySpark es el uso de RDD. Comprendamos qué son los RDD
Spark RDD
Cuando se trata de computación distribuida iterativa, es decir, procesar datos en múltiples trabajos en cálculos, necesitamos reutilizar o compartir datos entre múltiples trabajos. Los marcos anteriores como Hadoop tenían problemas al tratar con múltiples operaciones / trabajos como
- Almacenamiento de datos en almacenamiento intermedio como HDFS
- Múltiples trabajos de E / S hacen que los cálculos sean lentos
- Replicaciones y serializaciones que a su vez hacen que el proceso sea aún más lento
Los RDD intentan resolver todos los problemas habilitando cálculos distribuidos en memoria tolerantes a fallas. RDD es la abreviatura de Conjuntos de datos distribuidos resistentes. RDD es una abstracción de memoria distribuida que permite a los programadores realizar cálculos en memoria en grandes clústeres de manera tolerante a fallas. Ellos son las colección de objetos de solo lectura particionado en un conjunto de máquinas que se pueden reconstruir si se pierde una partición. Hay varias operaciones realizadas en RDD:
- Transformaciones: Las transformaciones crean un nuevo conjunto de datos a partir de uno existente. Evaluación perezosa
- Comportamiento: Spark fuerza la ejecución de los cálculos solo cuando se invocan acciones en los RDD
Comprendamos algunas transformaciones, acciones y funciones
Leer un archivo y mostrar los n elementos principales:
rdd = sc.textFile ('archivo: /// home / edureka / Desktop / Sample') rdd.take (n)
Salida:
mutable e inmutable en java
[u'La deforestación está surgiendo como el principal problema ambiental y social que ahora ha tomado la forma de algo más que un poderoso demonio. ', u'Debemos conocer las causas, efectos y formas de solucionar los problemas surgidos a causa de la deforestación. ', u'Hemos proporcionado muchos párrafos, ensayos largos y cortos sobre la deforestación para ayudar a sus hijos y niños a tomar conciencia del problema y participar en el concurso de redacción de ensayos en la escuela o fuera de la escuela. ', u'Puede seleccionar cualquier ensayo de deforestación que se proporciona a continuación de acuerdo con el estándar de la clase. ', u'La deforestación está surgiendo como el mayor problema global para la sociedad y el medio ambiente.']
Conversión a minúsculas y división: (Inferior y dividida)
def Func (líneas): líneas = líneas.bajo () líneas = líneas.split () devolver líneas rdd1 = rdd.map (Func) rdd1.take (5)
Salida:
[[u'deforestation ', u'is', u'arising ', u'as', u'he ', u'main', u'environmental ', u'and', u'social ', u'issue ', u'que', u'tiene ', u'ahora', u'tomado ', ...... . . ]
Eliminación de palabras vacías: (Filtro)
stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'Yo', 'yo', 'por qué', 'con'] rdd2 = rdd1.filter (lambda z: z no en stop_words) rdd2.take (10)
Salida:
[u'deforestación ', u'arising', u'main ', u'environmental', u'social ', u'issue', u'which ', u'ha', u'now ', u'taken' ]
Suma de números del 1 al 500: (Reducir)
sum_rdd = sc.parallelize (rango (1,500)) sum_rdd.reduce (lambda x, y: x + y)
Salida:
124750
Aprendizaje automático con PySpark
Continuando con nuestro blog de tutoriales de PySpark, analicemos algunos datos de baloncesto y hagamos predicciones futuras. Entonces, aquí vamos a utilizar los datos de baloncesto de todos los jugadores de la NBA desde 1980 [año de introducción de los 3 punteros].
Carga de datos:
df = spark.read.option ('header', 'true') .option ('inferSchema', 'true') .csv ('file: ///home/edureka/Downloads/season_totals.csv')
Columnas de impresión:
imprimir (df.columns)
Salida:
['_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']
Clasificación de jugadores (OrderBy) y toPandas:
Aquí clasificamos a los jugadores en función de los puntos anotados en una temporada.
df.orderBy ('pts', ascendente = False) .limit (10) .toPandas () [['año', 'jugador', 'edad', 'pts', 'fg3']]
Salida:
Usando DSL y matplotlib:
Aquí estamos analizando el número medio de Intentos de 3 puntos para cada temporada en un tiempo límite de 36 min [un intervalo correspondiente a un partido de NBA completo aproximado con descanso adecuado]. Calculamos esta métrica usando el número de intentos de tiros de campo de 3 puntos (fg3a) y minutos jugados (mp) y luego trazamos el resultado usando matlplotlib .
de pyspark.sql.functions import col fga_py = df.groupBy ('año') .agg ({'mp': 'sum', 'fg3a': 'sum'}) .select (col ('año'), ( 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 ('Year') _ = plt.title ('Promedio del jugador Intentos de 3 puntos (por 36 minutos) ') plt.annotate (' 3 punteros introducidos ', xy = (1980, .5), xytext = (1981, 1.1), tamaño de fuente = 9, arrowprops = dict (facecolor =' gray ', encoger = 0, ancho de línea = 2)) plt.annotate (' NBA movido en línea de 3 puntos ', xy = (1996, 2.4), xytext = (1991.5, 2.7), tamaño de fuente = 9, puntas de flecha = dict (facecolor = 'gris', encoger = 0, ancho de línea = 2)) plt.annotate ('NBA movió la línea de 3 puntos hacia atrás', xy = (1998, 2.), xytext = (1998.5, 2.4), tamaño de fuente = 9, puntas de flecha = dict (facecolor = 'gray', shrink = 0, linewidth = 2))
Salida:
Regresión lineal y ensamblador de vectores:
Podemos ajustar un modelo de regresión lineal a esta curva para modelar el número de intentos de disparo durante los próximos 5 años. Tenemos que transformar nuestros datos usando la función VectorAssembler en una sola columna. Esto es un requisito para la API de regresión lineal en MLlib.
from pyspark.ml.feature import VectorAssembler t = VectorAssembler (inputCols = ['año'], outputCol = 'features') training = t.transform (fga_py) .withColumn ('año', fga_py.yr) .withColumn ('etiqueta ', fga_py.fg3a_p36m) training.toPandas (). head ()
Salida:
Modelo de construcción:
Luego construimos nuestro objeto de modelo de regresión lineal utilizando nuestros datos transformados.
from pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (entrenamiento)
Aplicar el modelo entrenado al conjunto de datos:
Aplicamos nuestro modelo de objeto modelo entrenado a nuestro conjunto de entrenamiento original junto con 5 años de datos futuros
de pyspark.sql.types import Row # aplicar modelo para la temporada 1979-80 hasta la temporada 2020-21 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 # construido prueba DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # aplicar modelo de regresión lineal df_results = model.transform (all_years_features) .toPandas ()
Trazando la predicción final:
Luego podemos trazar nuestros resultados y guardar el gráfico en una ubicación específica.
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 = None) plt.xlabel (' Año ') plt.ylabel (' Número de intentos ') plt.legend (loc = 4) _ = plt.title (' Promedio de intentos de 3 puntos del jugador (cada 36 minutos) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')
Salida:
Y con este gráfico llegamos al final de este Blog Tutorial de PySpark.
función miembro estática c ++
¡Así que esto es todo, chicos!
Espero que tengan una idea de lo que es PySpark, por qué Python es más adecuado para Spark, los RDD y un vistazo de Machine Learning con Pyspark en este Blog Tutorial de PySpark. Felicitaciones, ya no es un novato en PySpark. Si desea obtener más información sobre PySpark y comprender los diferentes casos de uso de la industria, eche un vistazo a nuestra Spark con Python Blog.
Ahora que ha entendido qué es 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 usando Python y prepararlo para el examen de certificación Cloudera Hadoop y Spark Developer Certification (CCA175).