0% encontró este documento útil (0 votos)
23 vistas28 páginas

Big Data Con Apache Spark y Python: de Cero A Experto

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
23 vistas28 páginas

Big Data Con Apache Spark y Python: de Cero A Experto

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 28

01/11/2022

Big Data con Apache Spark 3 y


Python: de cero a experto

Introducción a Apache Spark

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.

Apache Spark vs MapReduce

Más fácil y rápida que Hadoop MapReduce.


Diferencias:
• Spark mucho más rápido al almacenar en caché los datos en la memoria vs MapReduce en
el disco duro (más lectura y escritura )
• Spark optimizado para un mejor paralelismo, utilización CPU e inicio más rápido
• Spark tiene modelo de programación funcional más rico
• Spark es especialmente útil para algoritmos iterativos

2
01/11/2022

Cómo se Spark en un clúster

Componentes de Spark

Spark contiene un ecosistema de herramientas muy completo.

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

Tipos de administradores de clústeres

Spark admite los siguientes administradores de clústeres:


• Standalone : administrador de clúster simple
• Apache Mesos : es un administrador de clústeres que puede ejecutar también Hadoop
MapReduce y PySpark.
• Hadoop YARN : el administrador de recursos en Hadoop 2
• Kubernetes: para automatizar la implementación y administración de aplicaciones en
contenedores.

Instalación de Apache Spark

10

5
01/11/2022

Pasos para instalar Spark (1)

1. Descarga Spark de https://spark.apache.org/downloads.html


2. Modifica el log4j.properties.template pon en log4j.rootCategory=ERROR en vez de INFO.
3. Instala Anaconda de https://www.anaconda.com/
4. Descarga winutils.exe. Es un binario de Hadoop para Windows - del repositorio de GitHub de
https://github.com/steveloughran/winutils/ . Vaya a la versión de Hadoop correspondiente con la
distribución de Spark y busque winutils.exe en /bin.

1 4

11

Pasos para instalar Spark (2)

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

Validación de la instalación de Spark

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

RDDs de Apache Spark

14

7
01/11/2022

Apache Spark RDDs

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

Con los RDD, puede realizar dos tipos de operaciones:


• Transformaciones: estas operaciones se aplican para crear un nuevo RDD.
• Acciones: estas operaciones se aplican en un RDD para indicarle a Apache Spark que aplique el
cálculo y devuelva el resultado al controlador.

16

8
01/11/2022

DataFrames en Apache Spark

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

Ventajas de los DataFrames

Algunas de las ventajas de trabajar con Dataframes en Spark son:


• Capacidad de procesar una gran cantidad de datos estructurados o semiestructurados
• Fácil manejo de datos e imputación de valores faltantes
• Múltiples formatos como fuentes de datos
• Compatibilidad con múltiples lenguajes

19

Características de los DataFrames

Los DataFrames de Spark se caracterizan por: ser distribuidos, evaluación perezosa, inmutabilidad y
tolerancia a fallos.

20

10
01/11/2022

Fuentes de datos de DataFrames

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

Funciones avanzadas de Spark

22

11
01/11/2022

Funciones avanzadas

Spark contiene numerosas funciones avanzadas para optimizar su rendimiento y realizar


transformaciones complejas en los datos. Algunas de ellas son: las expresiones de selectExpr(), UDF,
cache ( ), etc

23

Optimización del rendimiento

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

Analítica avanzada con Spark

25

Funciones para analítica de datos

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

PySpark es compatible con numerosas librerías de


visualización de datos de Python como seaborn,
matplotlib, bokehn, etc

27

Machine Learning con Spark

28

14
01/11/2022

Spark Machine Learning

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 Spark Machine Learning

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

Componentes Spark Machine Learning

Spark MLlib proporciona las siguientes herramientas:


• Algoritmos ML: Incluyen algoritmos de aprendizaje comunes como clasificación, regresión,
agrupamiento y filtrado colaborativo.
• Caracterización: Incluye: extracción, transformación,
reducción de dimensionalidad y selección de características.
• Pipelines: son herramientas para construir modelos de ML en
etapas.
• Persistencia: permite guardar y cargar algoritmos, modelos
y pipelines.
• Utilidades: para álgebra lineal, estadística y manejo de datos.

31

Proceso de Machine Learning

Fuente: https://www.r-bloggers.com/

32

16
01/11/2022

Ingeniería de características con Spark

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

Ingeniería de características con Spark

• 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

Apache Spark Koalas

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

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

Ejemplo: Ingeniería de características con Koalas

En ciencia de datos a menudo se necesita la función de get_dummies( ) de pandas para codificar


variables categóricas como variables ficticias (numéricas).
Gracias a Koalas se puede hacer esto en Spark con solo unos pocos ajustes.

Pandas

Koalas

39

Ejemplo: Ingeniería de características con Koalas

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

Fundamentos Spark Streaming

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

Funcionamiento Spark Streaming

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

Ejemplo: contar palabras

44

22
01/11/2022

Modos de salida

Spark usa varios modos de salida para almacenar los datos:

• Modo completo (Complete): toda la tabla se almacenará

• 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

Capacidades de Spark Streaming

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

Términos importantes que debemos conocer:

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

También podría gustarte