Big Data Con Apache Spark y Python: de Cero A Experto
Big Data Con Apache Spark y Python: de Cero A Experto
1
01/11/2022
Apache Spark
Spark es una solución Big Data de código abierto. Desarrollado por el laboratorio RAD de UC Berkeley
(2009).
Se ha convertido en una herramienta
de referencia en el campo del Big Data.
2
01/11/2022
Componentes de Spark
3
01/11/2022
PySpark
PySpark es una biblioteca Spark escrita en Python para ejecutar la aplicación Python usando las
capacidades de Apache Spark.
Ventajas de PySpark:
• Fácil de aprender
• Amplio conjunto de librerías para ML y DS
• Gran apoyo de la comunidad
Arquitectura de PySpark
Apache Spark funciona en una arquitectura maestro-esclavo. Las operaciones se ejecutan en los
trabajadores, y el Cluster Manager administra los recursos.
4
01/11/2022
10
5
01/11/2022
1 4
11
1. Si no tienes Java o la versión de Java es 7.x o menos, descargue e instale Java desde Oracle
https://www.oracle.com/java/technologies/downloads/
2. Descomprime Spark en C:\spark
3. Añade el winutils.exe descargado a una carpeta de winutils en C:. Debe quedar así:
C:\winutils\bin\winutils.exe.
4. Desde cmd ejecuta: “cd C:\winutils\bin” y después: winutils.exe chmod 777 \tmp\hive
5. Añade las variables de entorno:
• HADOOP_HOME -> C:\winutils
• SPARK_HOME -> C:\spark
• JAVA_HOME -> C:\jdk
• Path -> %SPARK_HOME%\bin
• Path -> %JAVA_HOME%\bin
12
6
01/11/2022
1. Desde el prompt de Anaconda ejecuta: “cd C:\spark” y después “pyspark”. Deberías ver algo como
lo de la imagen 1.
2. Desde jupyter notebook instala findspark con “pip install findspark” y ejecuta el siguiente código.
import findspark
findspark.init()
import pyspark
sc = pyspark.SparkContext(appName="myAppName")
sc
1 2
13
14
7
01/11/2022
Los RDD son los componentes básicos de cualquier aplicación Spark. RDD significa:
• Resiliente: es tolerante a fallos y es capaz de reconstruir datos en caso de fallo.
• Distribuido: los datos se distribuyen entre los múltiples nodos de un clúster.
• Conjunto de datos: colección de datos particionados con valores.
15
Operaciones en RDDs
16
8
01/11/2022
17
Introducción a DataFrames
Los DataFrames son de naturaleza tabular. Permiten varios formatos dentro de una misma tabla
(heterogéneos), mientras que cada variable suele tener valores con un único formato (homogéneos).
Similares a las tablas SQL o a las hojas de calculo.
18
9
01/11/2022
19
Los DataFrames de Spark se caracterizan por: ser distribuidos, evaluación perezosa, inmutabilidad y
tolerancia a fallos.
20
10
01/11/2022
Los marcos de datos en Pyspark se pueden crear de varias formas: a través de archivos, utilizando RDDs
o a través de bases de datos.
21
22
11
01/11/2022
Funciones avanzadas
23
Una de las técnicas de optimización son los métodos cache() y persist(). Estos métodos se usan para
almacenar un calculo intermedio de un RDD, DataFrame y Dataset para que puedan reutilizarse en
acciones posteriores.
1 2
24
12
01/11/2022
25
Para poder entrenar un modelo o realizar análisis estadísticos con nuestros datos son necesarias las
siguientes funciones y tareas:
• Generar una sesión de Spark
• Importar los datos y generar un esquema correcto
• Métodos para inspeccionar datos
• Transformación de datos y de columnas
• Lidiar con los valores faltantes
• Ejecutar consultas
• Visualización de datos
26
13
01/11/2022
Visualización de datos
27
28
14
01/11/2022
Machine Learning: es la construcción de algoritmos que pueden aprender de los datos y hacer
predicciones sobre ellos.
Spark MLlib se usa para realizar aprendizaje automático en Apache Spark. MLlib consta de algoritmos y
funciones habituales.
29
Herramientas de MLlib:
• spark.mllib contiene la API original construida sobre RDD
• spark.ml proporciona una API de nivel superior construida sobre DataFrames para construcción
de pipelines de ML. La API de ML principal.
Fuente: https://www.r-bloggers.com/
30
15
01/11/2022
31
Fuente: https://www.r-bloggers.com/
32
16
01/11/2022
Las técnicas de preprocesamiento de datos más utilizadas en los enfoques de Spark son las siguientes
• VectorAssembler
• Agrupamiento
• Escalado y normalización
• Trabajar con características categóricas
• Transformadores de datos de texto
• Manipulación de funciones
• PCA
33
• Vector Asembler: Se utiliza básicamente para concatenar todas las características en un solo vector que se
puede pasar al estimador o al algoritmo ML
• Agrupamiento: es el método más sencillo para convertir las variables continuas en variables categóricas. Se
puede realizar con la clase Bucketizer.
• Escalado y normalización: es otra tarea común en variables continuas. Permite que los datos tengan una
distribución normal.
• MinMaxScaler y StandardScaler: estandarizan las características con una media cero y una desviación estándar
de 1.
• StringIndexer : para convertir características categóricas en
numéricas.
34
17
01/11/2022
Pipelines en PySpark
En los Pipelines (canalizaciones) las diferentes etapas del trabajo de aprendizaje automático se pueden
agrupar como una sola entidad y se pueden considerar como un flujo de trabajo ininterrumpido.
Cada etapa es un Transformador . Se ejecutan en secuencia y los datos de entrada se transforman
mientras pasan por cada etapa.
35
36
18
01/11/2022
Introducción a Koalas
Koalas proporciona un reemplazo directo de Pandas, lo que permite un escalado eficiente a cientos de
nodos para la ciencia de datos y el Machine Learning.
Pandas no se escala a Big data.
PySpark DataFrame es más compatible con SQL y Koalas DataFrame está más cerca de Python
37
Koalas y PySpark DataFrames son diferentes. Koalas DataFrames sigue la estructura de Pandas e
implementa un índice. El PySpark DataFrame es más compatible con las tablas en las bases de datos
relacionales y no tiene índices.
Koalas traduce las API de pandas al plan
lógico de Spark SQL.
38
19
01/11/2022
Pandas
Koalas
39
En ciencia de datos a menudo se necesita trabajar con datos de tiempo. Pandas permite trabajar con
este tipo de datos de forma fácil, en PySpark es más complicado.
Pandas
Koalas
40
20
01/11/2022
Spark Streaming
41
PySpark Streaming es un sistema escalable y tolerante a fallos que sigue el paradigma de lotes RDD.
Opera en intervalos de lotes, recibiendo un flujo de datos de entrada continuo de fuentes como
Apache Flume , Kinesis, Kafka, sockets TCP, etc.
Spark Engine se encarga de procesarlos.
42
21
01/11/2022
Spark Streaming recibe datos de varias fuentes y los agrupa en pequeños lotes (Dstreams) en un
intervalo de tiempo. El usuario puede definir el intervalo. Cada lote de entrada forma un RDD y se
procesa mediante trabajos de Spark para crear otros RDD.
43
44
22
01/11/2022
Modos de salida
• Modo de adición (Append): solo las nuevas filas del último proceso se alamcenará. Solo para
las consultas en las que no se espera que cambien las filas existentes.
• Modo de actualización (Update): solo las filas que se actualizaron desde el último proceso se
almacenarán. Este modo solo genera las filas que han cambiado desde el último proceso.Si la
consulta no contiene agregaciones, será equivalente al modo append.
Complete,
Append,
Update
45
Tipos de transformaciones
Para tolerancia a fallos los datos recibidos se copian en dos nodos y hay también un mecanismo
llamado checkpointing.
Las transformaciones se pueden agrupar en :
• sin estado: no depende de los datos
de lotes anteriores.
• con estado: utilizan datos
de lotes anteriores
46
23
01/11/2022
47
Databricks
48
24
01/11/2022
Introducción a Databricks
Databricks es la plataforma analítica de datos basada en Apache Spark desarrollada por los precursores de
Spark. Permite analítica avanzada, Big Data y ML de forma sencilla y colaborativa.
Disponible como servicio cloud en Azure, AWS y GCP.
49
Características de Databricks
Permite auto-escalar y dimensionar entornos de Spark de forma sencilla. Facilita los despliegues y se acelera la
instalación y configuración de los entornos.
50
25
01/11/2022
Arquitectura de Databricks
51
Databricks Community
Databricks community es la versión gratuita. Permite usar un pequeño clúster con recursos limitados y
notebooks no colaborativos. La versión de pago aumenta las capacidades.
52
26
01/11/2022
Terminología
1. Workspaces
2. Notebooks
3. Librerías
4. Tablas
5. Clusters
6. Jobs
53
Delta Lake
Delta Lake es la capa de almacenamiento open source desarrollada para Spark y Databricks.
Proporciona transacciones ACID y gestión avanzada de metadatos.
Incluye un motor de consultas compatible con Spark que permite acelerar las operaciones y mejoran el
rendimiento. Los datos almacenados en formato Parquet.
54
27
01/11/2022
Recursos
55
Recursos:
• https://spark.apache.org/docs/2.2.0/index.html Documentación oficial de Spark
• https://colab.research.google.com/ Google Colab para poder tener capacidad de computo
adicional
56
28