Building Batch Data Pipelines
Introduction to Building Batch Data Pipelines
Los batch data pipelines son pipelines que tienen un control y limitación para los datos que pasan a través de estos. Así puede regular los datos procesados transaccionales una vez cada día.
Estos pipelines ordenan y almacenan los datos, para esto existen 3 sistemas de canalización que se puede utilizar: EL, ELT o ETL. Las siglas pertenecen a las acciones de Extraer, Load (Cargar) y Transformar los datos. Durante esta sesión se explicará cada uno de los sistemas y se verificará la situación donde se debe aplicar cada uno.
EL (Extraer y Cargar)
Este proceso corresponde a las acciones de extraer y cargar los datos, por lo tanto, se puede aplicar cuando los datos están listos para ser procesados desde el origen, es decir que la fuente y el objetivo tienen el mismo esquema, y no requiere transformaciones.
¿Cuándo aplicar el sistema EL?
Este sistema se aplica únicamente cuando los datos ya están limpios y en el formato correcto. Por ejemplo, llevar datos desde Google Cloud Storage hacia el almacenamiento de Big Query, no requiere una transformación.
Se puede usar EL para cargar datos históricos Batch o cargas programadas de archivos de registro.
ELT (Extraer, Cargar y Transformar)
Carga lo datos sin procesar directamente en el almacenamiento para que sean transformados solamente si es necesario. Puede realizar esta transformación solamente si el usuario o el sistema lo requieren.
La extracción y carga son igual que en EL o podrían funcionar de la misma manera, cargando los datos directamente desde Cloud Storage a Big Query. Luego se transforman cuando se solicita la vista de los mismos.
¿Cuándo aplicar ELT?
Un caso común es cuando no se sabe que se necesitan tipos de transformaciones para que los datos sean utilizables. Por ejemplo, digamos que alguien sube una nueva imagen. Invoca la API de Cloud Vision y vuelve un mensaje JSON largo sobre todo tipo de cosas en la imagen: texto en la imagen, si hay un hito, un logo. ¿Qué objetos? ¿Qué necesitará un analista en el futuro? No lo sabes. Por lo tanto, almacena el JSON sin procesar, es decir tal como está. Más tarde, si alguien quiere contar la cantidad de veces que los logotipos de una empresa específica están en este conjunto de imágenes, pueden extraer logotipos del JSON y luego contarlos.
Consideraciones de calidad
Las consideraciones son independientes la una de la otra y son: Validez, precisión, completitud, coherencia y uniformidad. Cualquier falla en estas consideraciones es capaz de ocasionar problemas y perdidas en el área comercial.
ELT es capaz de solucionar muchos problemas de calidad en Big Query. Los datos no válidos se pueden filtrar mediante una vista de BigQuery y todos pueden acceder a la vista en lugar de a los datos sin procesar.
Podemos usar Vistas para filtrar valores que tengan problemas de calidad. Por ejemplo, eliminar cantidades menores que cero usando una cláusula WHERE. Después de hacer un grupo, puede descartar los grupos cuyo número total de registros es <10 usando la cláusula HAVING. Piense detenidamente cómo desea tratar los nulos y los espacios en blanco. Un NULL es la ausencia de datos. UN BLANK es una cadena vacía. Considere si está tratando de filtrar tanto NULLS como BLANKS o solo NULL o solo BLANK. Puede contar fácilmente valores no nulos usando COUNTIF y use la instrucción IF para evitar el uso de valores específicos en los cálculos.
Los problemas de coherencia suelen deberse a duplicados. Esperas que algo sea único, y no lo es, por lo que cosas como los totales están mal.
COUNT proporciona el número de filas en una tabla que contienen un valor no nulo. COUNT DISTINCT proporciona el número de valores únicos
Para mayor precisión, pruebe los datos con valores buenos conocidos.
Por ejemplo, si tiene un pedido, puede calcular el subtotal a partir de la cantidad ordenada y del artículo precio y asegurarse de que las matemáticas sean correctas. De manera similar, puede verificar si un valor que se inserta pertenece a una lista canónica de valores aceptables. Puede hacerlo con SQL IN.
Para que esté completo, identifique los valores que faltan y fíltrelos o reemplácelos por algo razonable. Si el valor que falta es NULL, SQL proporciona funciones como NULLIF, COUNTIF, COALESCE, etc. Para filtrarlos de los cálculos.
ETL Extraer, Transformar y Cargar
Es un proceso de integración de datos en el que la transformación tiene lugar en un servicio intermedio antes de que se cargue en el destino. Por ejemplo, los datos podrían transformarse en Cloud Dataflow antes de cargarse en BigQuery.
ETL es el más apropiado aquí. Extraeremos todos los datos de las transacciones y realizaremos el procesamiento para conciliarlos, y luego escribiremos las transacciones conciliadas en el almacén de datos, dejando las transacciones sin conciliar para la próxima vez que se ejecute el trabajo por lotes.
La arquitectura de referencia para GCP sugiere Cloud Dataflow como una herramienta ETL. La arquitectura se ve así:
● Extraiga datos de Pub / Sub, Google Cloud Storage, Cloud Spanner, Cloud SQL, etc.
● Transforma los datos con Cloud Dataflow.
● Hacer que la canalización de Dataflow escriba en BigQuery
¿Cuándo utilizar ETL?
1. Cuando es necesario controlar la calidad, transformar o enriquecer los datos sin procesar antes de cargarlos en BigQuery. También cuando las transformaciones son difíciles de hacer en SQL.
2. Cuando la carga de datos tiene que ocurrir de forma continua, es decir, si el caso de uso requiere transmisión. Dataflow admite la transmisión.
3. Cuando desee integrarse con sistemas de integración continua / entrega continua (CI / CD) y realizar pruebas unitarias en todos los componentes. Es fácil programar el lanzamiento de una canalización de flujo de datos.
Dataflow no es la única opción que se tienes en GCP si se utiliza ETL.
Varios servicios de procesamiento y transformación de datos que proporciona GCP son: Cloud Dataflow, Cloud Dataproc y Cloud Data Fusion.
Cloud Dataproc y Cloud Dataflow
Se pueden usar para pipelines ETL más complejas.
Cloud Dataproc
Se basa en Apache Hadoop y requiere una gran experiencia en Hadoop para aprovecharlo directamente.
Cloud Dataproc es un servicio administrado para procesamiento por lotes, consultas, transmisión y aprendizaje automático. Proporciona un servicio administrado para cargas de trabajo de Hadoop y es bastante rentable alrededor de 1 centavo más que el costo de ejecutarlo desde cero y asumir todas las actividades de mantenimiento de Hadoop.
También tiene algunas características interesantes como el ajuste de escala automático y la integración lista para usar con productos de GCP como BigQuery.
Cloud Data Fusion
Proporciona una interfaz gráfica fácil de usar para crear pipelines ETL que luego se pueden implementar fácilmente a escala en clústeres de Cloud Dataproc.
Cloud Data Fusion es un servicio de integración de datos empresarial nativo de la nube totalmente administrado para crear y administrar rápidamente canalizaciones de datos. Puede usarlo para completar un almacén de datos, pero también puede usarlo para transformaciones y limpieza y garantizar la coherencia de los datos.
Los usuarios, que pueden ser parte del negocio, pueden crear canalizaciones visuales para abordar imperativos comerciales como el cumplimiento normativo sin tener que esperar a que un equipo de TI codifique una canalización de Dataflow.
Data Fusion también tiene una API para codificar. La gente de TI puede usarlo para programar y automatizar.
Cloud Dataflow
Es un servicio de procesamiento de datos sin servidor totalmente administrado basado en Apache Beam que admite canalizaciones de procesamiento de datos por lotes y de transmisión.
Si bien es deseable una experiencia significativa en Apache Beam para aprovechar todo el poder de Cloud Dataflow, Google también proporciona plantillas de inicio rápido para Cloud Dataflow que le permiten implementar rápidamente una serie de canalizaciones de datos útiles.
Soluciones que una ETL genera
1. Latencia y rendimiento. Las consultas de BigQuery están sujetas a una latencia del orden de unos cientos de milisegundos y puede transmitir en el orden de un millón de filas por segundo a una tabla de BigQuery que solía ser de 100.000 filas, pero recientemente se elevó a 1 millón por proyecto. El número de latencia típico citado para BigQuery es del orden de un segundo, pero con el motor de BI es posible obtener una latencia del orden de 100 milisegundos. Siempre debe consultar la documentación y las páginas de soluciones para conocer los valores más recientes. Si tus consideraciones de latencia y rendimiento son más estrictas, entonces Cloud Bigtable podría ser un mejor receptor para tus canalizaciones de procesamiento de datos.
2. Reutilización de tuberías Spark. Quizás ya tenga una inversión significativa en Hadoop y Spark. En ese caso, podría ser mucho más productivo con una tecnología familiar. Utilice Spark si eso es lo que sabe muy bien.
3. Necesidad de construcción de canalizaciones visuales. Dataflow requiere que codifique las canalizaciones de datos en Java o Python. Si desea que los analistas de datos y los usuarios no técnicos creen canalizaciones de datos, use Cloud Data Fusion. Pueden arrastrar y soltar y construir canalizaciones visualmente.
Autores:
- Gabriel Guerra
- Paulette Parra
- Diego Paz
- Pablo Zuñiga