Ingeniería de datos. Diseño, implementación y optimización de flujos de datos en Python
José Manuel Ortega Candel
Este libro es una guía esencial para quienes desean dominar los conceptos y técnicas de ingeniería de datos. A través de un enfoque teórico-práctico,
se exploran los métodos para la ingesta, almacenamiento y procesamiento eficiente de datos, con énfasis en el uso de Python y otras tecnologías clave.
Los lectores aprenderán sobre la importancia de los datos en las organizaciones, comprendiendo las funciones y responsabilidades de la ingeniería de datos. Además, se profundiza en las tecnologías y herramientas disponibles para extraer datos de diferentes sistemas y aplicaciones. El libro guía a los usuarios en la implementación de modelos de almacenamiento que faciliten el análisis eficiente y en la programación de scripts para el procesamiento de datos en tiempo real.
A lo largo del libro, se desarrollan ejemplos prácticos para afianzar los conocimientos, permitiendo a los lectores crear y ejecutar scripts en Python desde la consola. Se incluye un repositorio con todos los ejemplos analizados, para que los lectores puedan realizar pruebas y asimilar los contenidos teóricos de manera efectiva.
Esta obra es ideal para quienes buscan una comprensión profunda y práctica de la ingeniería de datos, sus tecnologías y aplicaciones en el procesamiento de grandes volúmenes de información.
- Escritor
- José Manuel Ortega Candel
- Colección
- Profesional
- Materia
- Ciencia y análisis de datos
- Idioma
- Castellano
- EAN
- 9788410360686
- ISBN
- 978-84-10360-68-6
- Páginas
- 324
- Edición
- 1
- Número en la colección
- 1
Índice de contenido
INTRODUCCIÓN
OBJETIVOS
CAPÍTULO 1. INGENIERÍA DE DATOS
1.1 INTRODUCCIÓN
1.2 IMPORTANCIA DE LOS DATOS EN LAS ORGANIZACIONES
1.3 CICLO DE VIDA DE LOS DATOS
1.3.1 Ingesta y almacenamiento
1.3.2 Procesamiento y preparación
1.3.3 Exploración
1.3.4 Experimentación y predicción
1.4 ROL DE INGENIERO/A DE DATOS
1.5 INGESTA DE DATOS
1.5.1 Batch vs streaming
1.5.2 Arquitectura de la capa de ingesta
1.5.3 Herramientas de ingesta de datos
1.5.4 AWS Glue
1.6 PROCESAMIENTO Y PREPARACIÓN
1.6.1 Tipos de procesamiento de datos.
1.6.2 Procesamiento batch
1.6.3 Procesamiento streaming
1.7 ALMACENAMIENTO
1.7.1 Big Data
1.7.2 Almacenamiento distribuido
1.7.3 Elegir una herramienta ETL para trabajar en Big Data
1.8 PROCESOS ETL (EXTRACT, TRANSFORM, LOAD)
1.8.1 Extracción
1.8.2 Transformación
1.8.3 Carga
1.8.4 Herramientas ETL
1.8.5 Herramientas de orquestación de flujos de datos
1.9 TÉCNICAS DE EXTRACCIÓN DE DATOS
1.9.1 Ingesta batch
1.9.2 Ingesta en tiempo real
1.9.3 Change Data Capture
1.10 PIPELINES DE DATOS
1.10.1 Definición de pipeline
1.10.2 Fases de un pipeline de datos
1.10.3 Pipeline iterativo
1.11 FUENTES DE DATOS
1.11.1 Bases de datos
1.11.2 APIs
1.12 FORMATOS ANALÍTICOS
1.12.1 Apache Avro
1.12.2 Fastavro
1.12.3 Comprimiendo los datos
1.12.4 Parquet
1.12.5 Interactuando con Parquet mediante Pyarrow
1.12.6 Apache ORC
1.12.7 Comparando formatos
CAPÍTULO 2. DATA LAKE Y DATA WAREHOUSE
2.1 INTRODUCCIÓN
2.2 DEFINICIÓN DE DATA LAKE
2.3 CARACTERÍSTICAS DE UN DATA LAKE
2.4 TIPOS DE DATA LAKES
2.5 ARQUITECTURA DE UN DATA LAKE
2.5.1 Beneficios de una arquitectura de Data Lake
2.6 PROCESO DE CREACIÓN DE UN DATA LAKE
2.7 DEFINICIÓN DE DATA WAREHOUSE
2.7.1 Modelado bidimensional
2.7.2 Data Warehouse en la nube
2.8 DATA LAKES VS DATA WAREHOUSE
2.8.1 Conversión de los datos
2.8.2 Soporte de los tipos de datos
2.8.3 Adaptación a los cambios
2.9 CAPAS DE UN DATA LAKE
2.10 SOLUCIONES DE DATA LAKE EN LA NUBE
2.10.1 Azure Databricks
2.10.2 Ingeniería de datos en Microsoft Azure
2.10.3 Azure Synapse Analytics
2.10.4 Azure Data Lake
2.10.5 Azure Data Lake Storage Gen2
2.10.6 Azure Data Lake Analytics
2.10.7 Aws Data Lake
2.10.8 Snowflake
2.11 DATA LAKEHOUSE
2.11.1 Ventajas de un Data Lakehouse
2.11.2 Capas de un Data Lakehouse
2.11.3 Arquitectura de un Data Lakehouse
2.11.4 Herramientas para implementar un Data Lakehouse
2.12 PARADIGMA ACTUAL
CAPÍTULO 3. APACHE NIFI
3.1 INTRODUCCIÓN
3.2 COMPONENTES DE APACHE NIFI
3.2.1 Tipos de procesadores
3.2.2 Conectores en Apache NiFi
3.3 ARQUITECTURA DE APACHE NIFI
3.4 INSTALACIÓN DE APACHE NIFI.
3.5 APACHE NIFI REGISTRY
3.6 PROCESADORES EN APACHE NIFI
3.7 APACHE NIFI RECORD PROCESSING
3.8 APACHE NIFI SCHEMAS & SCHEMA REGISTRIES
3.9 APACHE NIFI SCHEDULING
3.10 APACHE NIFI FLOW MONITORING
3.11 EJEMPLO DE FLUJO EN APACHE NIFI
3.11.1 Desarrollar un flujo para mover datos
3.11.2 Gestión de errores en el flujo
3.12 CASOS DE USO CON APACHE NIFI
CAPÍTULO 4. PROCESAMIENTO EN STREAMING
4.1 INTRODUCCIÓN
4.2 INTRODUCCIÓN A APACHE FLINK
4.3 CARACTERÍSTICAS A APACHE FLINK
4.4 CONTROL DE EVENTOS EN APACHE FLINK
4.4.1 Tipos de ventanas de procesamiento
4.5 COMPONENTES DE APACHE FLINK
4.6 DESPLIEGUE DE APACHE FLINK
4.7 IMPLEMENTANDO FLINK EN PYTHON
CAPÍTULO 5. PROCESAMIENTO EN TIEMPO REAL
5.1 INTRODUCCIÓN
5.2 APACHE KAFKA
5.2.1 Back Pressure en Apache Kafka
5.2.2 Patrón productor/consumidor
5.2.3 Tópicos y particiones
5.2.4 Brokers
5.2.5 Factor de replicación
5.2.6 Réplica líder
5.2.7 Productores
5.2.8 Consumidores
5.3 USO DE KAFKA DESDE PYTHON
5.3.1 Desplegar un servidor de Kafka
5.4 COMPLEMENTOS DE APACHE KAFKA
5.4.1 Kafka Streams
5.4.2 Zookeeper en Apache Kafka
5.4.3 Apache Kafka como base de datos
5.5 ALTERNATIVAS DE APACHE KAFKA
5.5.1 Apache Kafka vs Red Panda
5.6 APACHE SPARK STREAMING
5.6.1 Introducción
5.6.2 Modelos de procesamiento
5.6.3 Operaciones en Spark Streaming
5.6.4 Instalación y configuración de Apache Spark
5.6.5 Procesamiento de datos en Streaming con Python
5.6.6 Fuentes de datos en Spark Streaming
5.6.7 Trabajando con ventanas temporales en Spark Streaming
5.6.8 Tipos de operaciones de ventana en Spark Streaming
5.6.9 Casos de uso de Apache Spark Streaming
5.6.10 Apache Kafka Streams vs Apache Spark Streaming
CAPÍTULO 6. PIPELINES DE DATOS
6.1 INTRODUCCIÓN A LOS PIPELINES DE DATOS
6.2 SEGURIDAD EN PIPELINES DE DATOS
6.3 CREAR UNA PIPELINE DATOS EN LA NUBE
6.4 PIPELINES DE DATOS EN PYTHON
6.4.1 Prefect
6.4.2 Airbyte como herramienta de gestión de flujos de datos
6.5 PIPELINES DE DATOS CON APRENDIZAJE AUTOMÁTICO
6.5.1 Mflow como plataforma de gestión de modelos de aprendizaje automático
6.5.2 Instalación y ejecución de MLflow
6.6 CREACIÓN DE PIPELINES CON APACHE BEAM
6.6.1 Introducción a Apache Beam
6.6.2 Creación de Pipelines con Python
6.6.3 Transformación de datos en Apache Beam
6.6.4 Contar palabras de un fichero de texto
6.6.5 Casos de uso de Apache Beam
6.6.6 Recursos para aprender Apache Beam
6.7 KEDRO COMO FRAMEWORK PARA CREAR PIPELINES
6.7.1 Desacoplamiento de la configuración
6.7.2 Modularización
6.7.3 Desacoplamiento de los datos
6.7.4 Testing
6.7.5 Creación de Nodos y Pipelines
6.8 GESTIÓN DE PIPELINES CON DBT (DATA BUILD TOOL)
6.8.1 Instalación y configuración de DBT
6.8.2 Ejecución de los modelos
6.9 GESTIÓN DE PIPELINES CON KUBEFLOW
6.9.1 Despliegue de Kubeflow Pipelines
6.9.2 Creación de componentes y Pipelines
6.9.3 Repositorio de artefactos
CAPÍTULO 7. APACHE AIRFLOW
7.1 INTRODUCCIÓN
7.2 INSTALACIÓN DE APACHE AIRFLOW
7.3 FUNCIONAMIENTO DE APACHE AIRFLOW
7.3.1 DAG (Grafo acíclico dirigido)
7.3.2 Operadores
7.3.3 Argumentos por defecto en el DAG
7.3.4 Definir dependencias en el DAG
7.3.5 Pasando datos entre tareas en el DAG
7.4 TAREAS Y OPERADORES EN APACHE AIRFLOW
7.4.1 Extendiendo la funcionalidad del operador de Python
7.5 ARQUITECTURA DE AIRFLOW
7.6 EJECUTANDO BASH OPERATOR EN AIRFLOW
7.7 CASO PRÁCTICO: DE CSV A JSON
7.8 ALMACENANDO LAS VENTAS EN CSV
7.9 PLANIFICACIÓN DE TAREAS
7.10 ALMACENANDO EN BASE DE DATOS SQLITE
7.11 COMANDOS ÚTILES DE AIRFLOW
7.12 ASTRONOMER
CAPÍTULO 8. PROGRAMACIÓN CON FLUJOS DE DATOS (DATA FLOW)
8.1 INTRODUCCIÓN
8.2 GOOGLE DATAFLOW
8.2.1 Componentes de Google Dataflow
8.2.2 Ventajas de Google Dataflow
8.2.3 Procesamiento Batch y Streaming en Google Dataflow
8.2.4 Pipelines en Google Dataflow
8.3 GOOGLE DATAPROC
8.3.1 Ventajas de Google Dataproc
8.3.2 Creación de un Clúster en Google Dataproc
8.3.3 Componentes de Google Dataproc
8.3.4 Google Dataproc Autoscaling
8.3.5 Google Dataproc vs Dataflow
GLOSARIO DE TÉRMINOS
8.4 GLOSARIO
Libros relacionados
(IFCD0011) Desarrollo y visualización de datos con Python
(IFCT128PO) Big Data
(IFCT01) Analista de Big Data y Científico de Datos
(IFCD71EXP) Herramientas de Big Data y Data Analytics
(IFCT119) Big Data y business intelligence
(IFCT127PO) Arquitectura Big Data
(IFCT165PO) Big Data para ingenierías
(IFCT120) Big Data. Analítica de datos
(IFCD112) Resolución de problemas multisectoriales: modelos de machine learning, deep learning y uso masivo de datos
Sistemas de Big Data