¿Qué hace realmente un Ingeniero de Datos?

Qué hace realmente un Ingeniero de Datos

Entre muchos de los profesionales que desarrollan y ejecutan proyectos de “Big Data y Analítica”, siempre existen varias interrogantes recurrentes, tales como: ¿Qué funciones o qué habilidades debería tener un Ingeniero de Datos, un Analista de Datos o un Científico de Datos?, ¿Cómo pueden colaborar y combinar sus esfuerzos tres personas con diferentes experiencias y habilidades para acelerar la ejecución de un proyecto de estas características?

En efecto, cada uno de estos roles cumple una función específica dentro de todo el ciclo de vida del dato mientras pasa por diferentes “pipelines” (en español “canalizaciones”, que son procesos secuenciales que extraen, transforman y cargan datos).

¿Qué realiza un ingeniero de datos?

En términos generales, la tarea de exploración de los datos es asignada a la persona con el perfil de analista de datos; por otro lado, el desarrollo y entrenamiento de un modelo matemático es realizada por un científico de datos. Estas dos tareas mencionadas anteriormente no se podrían realizar si toda la información necesaria para esta finalidad se encuentra en un formato difícil de leer e interpretar o si la información que está almacenada carece de orden.

Es aquí donde el rol de un ingeniero de datos toma valor ya que es el responsable de transformar los datos en bruto a datos consumibles, creando múltiples pipelines de datos.

Adicionalmente, está encargado de monitorear los pipelines generados, y en el caso de existir algún problema/fallo de ejecución cae entre sus tareas el revisar los registros o logs del proceso, diagnosticar el fallo y asegurar que la información que debía ser procesada se encuentre disponible en el almacén de datos lo más pronto posible.

Fuente: https://content.altexsoft.com/media/2019/06/word-image-29.png

En los zapatos de un ingeniero de datos

Para la generación de un nuevo pipeline de datos generalmente se sigue una serie de lineamientos clave en la etapa de predesarrollo, lo cual permite implementar la solución de la manera más adecuada. A continuación, se detallan algunos de ellos:

  1. Entender la(s) fuente(s) de datos y sus limitaciones.
  2. Tener claramente definidos los datos que faltan.
  3. Definir los tipos y el formato de los datos.
  4. Definir las zonas horarias y la frecuencia de las ejecuciones.
  5. Tener en mente la escalabilidad, mantenibilidad y durabilidad del desarrollo.
  6. Tener definidas previamente las tablas y/o vistas resultantes.
  7. Definir los usuarios que van a tener acceso a estos datos.
  8. Definir aprobadores para los procesos de migraciones de ambiente (DESARROLLO/QA/PRODUCCIÓN).
  9. Definir un proceso de retroalimentación de las partes interesadas (Product Owner, usuarios funcionales, etc..), para que la solución final cumpla con sus expectativas.

Como siguiente paso y enfocándonos en la etapa de desarrollo de pipelines de datos como tal, tanto el ingeniero, analista y científico de datos deberán familiarizarse con el espacio de trabajo de Databricks.

¿Qué herramienta / programa podría emplear?

Databricks en términos generales es una plataforma gestionada y colaborativa que permite el uso de flujos de trabajo mediante notebooks para ejecutar Apache Spark. Spark es un motor de procesamiento y análisis de datos a gran escala que usa el modelo de computación distribuida.

La herramienta principal de trabajo en Databricks y con la cual un ingeniero de datos se va a encontrar con frecuencia es el notebook, un notebook se puede definir como un documento colaborativo en el que se puede escribir código ejecutable en diferentes lenguajes (Spark proporciona APIs de alto nivel en Java, Scala, Python, SQL, Markdown y R) y se encuentra organizado por chunks (trozos/bloques de código fuente).

Dentro de los notebooks se puede realizar prácticamente todo lo necesario para generar datos que puedan ser interpretados y consumidos por las demás áreas de la organización. Dependiendo del lenguaje seleccionado tendremos funciones de alto nivel para cumplir plenamente las tareas de ingesta, transformación, emisión, guardado de los datos.

Tanto el lenguaje definido en el notebook y la forma de resolver el problema planteado queda a definición del desarrollador, ya que existen casos de uso en los cuales se tendrá que optar por un lenguaje específico, por ejemplo,  un analista de datos usará un notebook en SQL (ya que es un lenguaje que utiliza con frecuencia y tiene conocimientos avanzados) para realizar la tarea de exploración de los datos, a diferencia de un ingeniero o un científico de datos que por familiaridad y ventajas que proporciona se inclinarán por el uso de Pyspark o Scala, todo depende del enfoque de la solución y la optimización del proceso que desee lograr el desarrollador.

Adicionalmente Apache Spark nos provee de varias funciones adicionales a las ya mencionadas, que nos serán útiles en casos de uso concretos, entre estas funciones podemos encontrar a:

  • Spark Streaming: Sistema de procesamiento de streaming, escalable y tolerante a fallos que soporta de forma nativa tanto cargas de trabajo en batch como real time.
  • MLlib (Machine Learning Library): Framework de Machine Learning que aprovecha las capacidades del modelo de computación distribuida de Apache Spark.

Estás herramientas de alto nivel están pensadas para que los ingenieros y científicos de datos pasen el menor tiempo posible desarrollando complejos pipelines de datos y en cambio se enfoquen realmente en el proceso operativo y los resultados que buscan.


Fuente: https://d1.awsstatic.com/Data%20Lake/what-is-apache-spark.b3a3099296936df595d9a7d3610f1a77ff0749df.PNG

Con el tiempo, Apache Spark seguirá desarrollando y reforzando todo su propio ecosistema de herramientas, para volverse cada vez más versátil y potente, esta característica se ve reflejada en las múltiples mejoras que van implementando cada vez que lanzan una nueva versión del Runtime de Spark.

En los ecosistemas tecnológicos actuales donde el Big Data y la Analítica avanzada se van convirtiendo en norma, las organizaciones necesitarán implementar este tipo de herramientas y tendrán el reto de encontrar la mejor manera de utilizarlas.

Por las razones antes mencionadas Apache Spark por medio de Databricks se convierte en una herramienta esencial en proyectos y ecosistemas en la nube, para organizaciones que busquen ofrecer productos y servicios con valor agregado mediante el uso y la exploración intensiva de sus datos.

¿Estás listo para convertirte en el próximo Ingeniero de Datos? Con nuestro curso de “Ingeniería de Datos con Spark” aprenderás a procesar distintos tipos de datos estructurados y no estructurados a través de procesos ETL (Extracción, Transformación y Carga) usando Apache Spark y distintas técnicas para tratar datos masivos provenientes de fuentes SQL, NoSQL y Data Lakes.

Por otro lado, si tu enfoque es adquirir un conocimiento general de todas las tareas y destrezas que se requieren dentro de la ingeniería de datos empleando las principales nubes: Microsoft Azure, Amazon Web Services (AWS) y Google Cloud Platform (GCP), nuestro programa “Ingeniería de Datos Multicloud” es la opción ideal para poner en producción pipelines de datos sobre las nubes mencionadas.



Autor: Andrés Caiza

Desarrollador de software full-stack en handytec. Experiencia en implementaciones de arquitecturas de DWH modernos con tecnologías en la nube, desarrollo y despliegue de microservicios en diferentes lenguajes de programación, desarrollo e implementación de procesos RPA, generación de contenido interactivo 2D/3D para entornos web. Actualmente enfocado en el desarrollo y optimización de procesos de Ingeniería de Datos con Apache Spark.

Deja un comentario