Hola de nuevo El título del artículo habla de sí mismo. En previsión del comienzo del curso
"Ingeniero de datos", sugerimos averiguar quiénes son los ingenieros de datos. El artículo tiene muchos enlaces útiles. Que tengas una buena lectura.
Una guía simple sobre cómo atrapar la ola de ingeniería de datos y evitar que te lleve al abismo.Uno tiene la impresión de que hoy en día todos quieren convertirse en científicos de datos. ¿Pero qué pasa con la ingeniería de datos?
En esencia, es una especie de híbrido de un analista de datos y un científico de datos; Un ingeniero de datos generalmente es responsable de administrar flujos de trabajo, canalizaciones de procesamiento y procesos ETL . Debido a la importancia de estas funciones, esta es actualmente otra jerga profesional popular que está ganando impulso activamente.
¡Los altos salarios y la gran demanda son solo una pequeña parte de lo que hace que este trabajo sea extremadamente atractivo! Si quieres unirte a las filas de los héroes, nunca es demasiado tarde para comenzar a aprender. En esta publicación, he reunido toda la información necesaria para ayudarlo a dar los primeros pasos.
¡Entonces comencemos!
¿Qué es la ingeniería de datos?Honestamente, no hay mejor explicación que esta:
“Un científico puede descubrir una nueva estrella, pero no puede crearla. Tendrá que pedirle al ingeniero que lo haga por él.
–Gordon Lindsay Glegg
Por lo tanto, el papel de un ingeniero de datos es bastante significativo.
Del nombre se deduce que la ingeniería de datos está asociada con los datos, es decir, con su entrega, almacenamiento y procesamiento. En consecuencia, la tarea principal de los ingenieros es proporcionar una infraestructura confiable para los datos. Si observamos la jerarquía de necesidades de IA, la ingeniería de datos toma las primeras 2–3 etapas:
recopilar, mover y almacenar, preparar datos .
¿Qué hace un ingeniero de datos?Con la llegada de los grandes datos, el área de responsabilidad ha cambiado drásticamente. Anteriormente, estos expertos escribieron grandes consultas SQL y superaron los datos utilizando herramientas como Informatica ETL, Pentaho ETL, Talend, pero ahora los requisitos para los ingenieros de datos han aumentado.
La mayoría de las empresas con vacantes para el puesto de ingeniero de datos tienen los siguientes requisitos:
- Excelente conocimiento de SQL y Python.
- Experiencia con plataformas en la nube, en particular Amazon Web Services.
- Se prefiere el conocimiento de Java / Scala.
- Buen conocimiento de las bases de datos SQL y NoSQL (modelado de datos, almacenamiento de datos).
Tenga en cuenta que esto es solo lo más necesario. De esta lista, podemos suponer que los ingenieros de datos son especialistas en el campo del desarrollo de software y backend.
Por ejemplo, si una empresa comienza a generar una gran cantidad de datos de varias fuentes, su tarea como ingeniero de datos es organizar la recopilación de información, su procesamiento y almacenamiento.
La lista de herramientas utilizadas en este caso puede diferir, todo depende del volumen de estos datos, la velocidad de su recepción y la heterogeneidad. La mayoría de las empresas no encuentran grandes datos en absoluto, por lo tanto, como un repositorio centralizado, el llamado repositorio de datos, puede usar una base de datos SQL (PostgreSQL, MySQL, etc.) con un pequeño conjunto de scripts que dirigen los datos al repositorio.
Los gigantes de TI como Google, Amazon, Facebook o Dropbox tienen mayores demandas: conocimiento de Python, Java o Scala.
- Experiencia con big data: Hadoop, Spark, Kafka.
- Conocimiento de algoritmos y estructuras de datos.
- Comprender los conceptos básicos de los sistemas distribuidos.
- La experiencia con herramientas de visualización de datos como Tableau o ElasticSearch será una gran ventaja.
Es decir, hay un claro cambio hacia los grandes datos, es decir, en su procesamiento a altas cargas. Estas compañías han aumentado los requisitos de tolerancia a fallas del sistema.
Ingenieros de datos vs. datos científicos
Bueno, fue una comparación simple y divertida (nada personal), pero de hecho, todo es mucho más complicado.En primer lugar, debe saber que existe mucha ambigüedad en la distinción entre los roles y las habilidades de un científico de datos y un ingeniero de datos. Es decir, puede desconcertarse fácilmente por el tipo de habilidades necesarias para un ingeniero de datos exitoso. Por supuesto, hay ciertas habilidades que se superponen a ambos roles. Pero también hay una serie de habilidades diametralmente opuestas.
La ciencia de datos es un asunto serio, pero nos estamos moviendo hacia un mundo con una ciencia de datos funcional donde los profesionales pueden hacer sus propios análisis. Para usar tuberías de datos y estructuras de datos integradas, necesita ingenieros de datos, no científicos.
¿Un ingeniero de datos tiene más demanda que un científico de datos?- Sí, porque antes de que puedas hacer pastel de zanahoria, ¡primero debes recolectar, pelar y almacenar zanahorias!
Un ingeniero de datos sabe mejor sobre programación que cualquier científico de datos, pero cuando se trata de estadísticas, es exactamente lo contrario.
Pero aquí está la ventaja de un ingeniero de datos: sin él, el valor del modelo prototipo, que a menudo consiste en un fragmento de código de calidad terrible en un archivo Python, recibido de un científico de datos y que de alguna manera da un resultado, tiende a cero.
Sin un ingeniero de datos, este código nunca se convertirá en un proyecto y ningún problema comercial se resolverá de manera efectiva. Un ingeniero de datos está tratando de convertir todo esto en un producto.
Información básica que un ingeniero de datos debe saber
Entonces, si este trabajo despierta luz en ti y estás entusiasmado, puedes aprender esto, puedes dominar todas las habilidades necesarias y convertirte en una verdadera estrella de rock en el campo del desarrollo de datos. Y sí, puede hacerlo incluso sin habilidades de programación u otro conocimiento técnico. ¡Es difícil, pero posible!
¿Cuáles son los primeros pasos?Debe tener una idea general de qué es qué.
En primer lugar, la ingeniería de datos se refiere a la informática. Más específicamente, debe comprender algoritmos y estructuras de datos efectivos. En segundo lugar, dado que los ingenieros de datos trabajan con datos, es necesario comprender los principios de funcionamiento de las bases de datos y las estructuras subyacentes.
Por ejemplo, las bases de datos SQL B-tree regulares se basan en la estructura de datos B-Tree, así como en repositorios distribuidos modernos, LSM-Tree y otras modificaciones de la tabla hash.
* Estos pasos se basan en un maravilloso artículo de Adil Khashtamov . Entonces, si sabes ruso, apoya a este autor y lee su publicación .1. Algoritmos y estructuras de datos.El uso de la estructura de datos correcta puede mejorar significativamente el rendimiento del algoritmo. Idealmente, todos deberíamos estudiar estructuras de datos y algoritmos en nuestras escuelas, pero esto rara vez se cubre. En cualquier caso, nunca es demasiado tarde para familiarizarse.
Entonces, estos son mis cursos gratuitos favoritos para aprender estructuras de datos y algoritmos:
Además, no olvide el trabajo clásico sobre los algoritmos de Thomas Cormen:
Introducción a los algoritmos . Esta es la referencia perfecta cuando necesita actualizar su memoria.
- Para mejorar tus habilidades, usa Leetcode .
También puede sumergirse en el mundo de las bases de datos con los increíbles videos de la Universidad Carnegie Mellon en Youtube:
2. Aprendiendo SQLToda nuestra vida son datos. Y para extraer estos datos de la base de datos, debe "hablar" con ellos en un idioma.
SQL (lenguaje de consulta estructurado) es un lenguaje de comunicación de datos. No importa lo que alguien diga, SQL ha vivido, está vivo y vivirá durante mucho tiempo.
Si ha estado en desarrollo durante mucho tiempo, probablemente haya notado que periódicamente aparecen rumores sobre la muerte inminente de SQL. El lenguaje fue desarrollado a principios de los años 70 y todavía es muy popular entre analistas, desarrolladores y entusiastas.
Sin conocimiento de SQL, no hay nada que hacer en ingeniería de datos, ya que inevitablemente tendrá que crear consultas para recuperar datos. Todos los almacenes modernos de big data admiten SQL:
- Desplazamiento al rojo amazónico
- HP Vertica
- Oráculo
- Servidor SQL
... y muchos otros.
Para analizar una gran capa de datos almacenados en sistemas distribuidos como HDFS, se inventaron mecanismos SQL: Apache Hive, Impala, etc. Verá, no va a ir a ninguna parte.
¿Cómo aprender SQL? Solo hazlo en la práctica.
Para hacer esto, recomendaría leer un excelente tutorial, que, por cierto, está libre de
Mode Analytics .
- Medio SQL
- Combinando datos en SQL
Una característica distintiva de estos cursos es la presencia de un entorno interactivo en el que puede escribir y ejecutar consultas SQL directamente en el navegador. El recurso
SQL moderno no será redundante. Y puede aplicar este conocimiento en
las tareas de Leetcode en la sección Bases de datos.
3. Programación en Python y Java / ScalaPor qué vale la pena aprender el lenguaje de programación Python, ya escribí en el artículo
Python vs R. Elegir la mejor herramienta para AI, ML y Data Science . Para Java y Scala, la mayoría de las herramientas para almacenar y procesar grandes cantidades de datos están escritas en estos idiomas. Por ejemplo:
- Apache Kafka (Scala)
- Hadoop, HDFS (Java)
- Apache Spark (Scala)
- Apache Cassandra (Java)
- HBase (Java)
- Colmena Apache (Java)
Para comprender cómo funcionan estas herramientas, debe conocer los idiomas en que están escritas. El enfoque funcional de Scala le permite resolver eficientemente las tareas de procesamiento de datos en paralelo. Python, desafortunadamente, no puede presumir de velocidad y procesamiento paralelo. En general, el conocimiento de varios lenguajes y paradigmas de programación afecta bien la amplitud de enfoques para resolver problemas.
Para sumergirse en el lenguaje Scala, puede leer
Programación en Scala del autor del idioma. Twitter también publicó una buena guía introductoria:
Scala School .
En cuanto a Python, considero que
Fluent Python es el mejor libro de rango medio.
4. Herramientas de big dataAquí hay una lista de las herramientas más populares en el mundo de Big Data:
- Chispa Apache
- Apache kafka
- Apache Hadoop (HDFS, HBase, Hive)
- Apache Cassandra
Puede encontrar más información sobre la construcción de grandes bloques de datos en este increíble
entorno interactivo . Las herramientas más populares son Spark y Kafka. Definitivamente vale la pena explorarlos, es recomendable entender cómo funcionan de adentro hacia afuera. Jay Kreps (coautor de Kafka) en 2013 publicó el monumental trabajo
The Log: lo que todo desarrollador de software debe saber sobre la abstracción de la agregación de datos en tiempo real , por cierto, las ideas principales de este Talmud se utilizaron para crear Apache Kafka.
5. Plataformas en la nube
El conocimiento de al menos una plataforma en la nube está en la lista de requisitos básicos para los solicitantes para el puesto de ingeniero de datos. Los empleadores dan preferencia a los servicios web de Amazon, seguidos de la plataforma en la nube de Google, y cierran los tres principales líderes de Microsoft Azure.
Debe estar bien versado en Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.
6. Sistemas distribuidosTrabajar con grandes datos implica la presencia de grupos de computadoras que funcionan independientemente, la comunicación entre las cuales se lleva a cabo a través de la red. Cuanto más grande es el clúster, mayor es la probabilidad de falla de sus nodos miembros. Para convertirse en un experto experto en datos, debe profundizar en los problemas y las soluciones existentes para los sistemas distribuidos. Esta área es antigua y compleja.
Andrew Tanenbaum es considerado un pionero en este campo. Para aquellos que no tienen miedo a la teoría, recomiendo su libro
Sistemas Distribuidos , para principiantes puede parecer complicado, pero realmente te ayuda a perfeccionar tus habilidades.
Encuentro
Diseñar aplicaciones intensivas en datos de Martin Kleppmann es el mejor libro introductorio. Por cierto, Martin tiene un
blog maravilloso. Su trabajo ayudará a sistematizar el conocimiento sobre la construcción de una infraestructura moderna para almacenar y procesar grandes datos.
Para aquellos a quienes les gusta ver videos, hay un curso de
Sistemas informáticos distribuidos en Youtube.
7. Tuberías de datos
Las tuberías de datos son lo que no puede vivir sin como ingeniero de datos.
La mayoría de las veces, el ingeniero de datos crea la llamada fecha de canalización, es decir, crea el proceso de entrega de datos de un lugar a otro. Estos pueden ser scripts de usuario que van a la API del servicio externo o hacen una consulta SQL, complementan los datos y los colocan en un almacenamiento centralizado (almacén de datos) o almacenamiento de datos no estructurado (lago de datos).
Para resumir: lista de verificación del ingeniero de datos principal
Para resumir, necesita una buena comprensión de lo siguiente:
- Sistemas de información;
- Desarrollo de software (Agile, DevOps, Design Techniques, SOA);
- Sistemas distribuidos y programación paralela;
- Fundamentos de las bases de datos: planificación, diseño, operación y resolución de problemas;
- Diseño de experimentos: pruebas A / B para probar conceptos, determinar la confiabilidad, el rendimiento del sistema y también desarrollar formas confiables para proporcionar rápidamente buenas soluciones.
Estos son solo algunos requisitos para convertirse en un ingeniero de datos, así que estudie y comprenda los sistemas de datos, sistemas de información, entrega / implementación / integración continua, lenguajes de programación y otros temas en informática (no en todas las áreas temáticas).
Y finalmente, lo último pero muy importante que quiero decir.El camino para convertirse en Data Engineering no es tan simple como parece. Él no perdona, frustra, y debes estar preparado para esto. Algunos puntos en este viaje pueden hacer que renuncies. Pero este es un verdadero trabajo y proceso educativo.
Simplemente no lo adornes desde el principio. El objetivo de viajar es aprender tanto como sea posible y estar preparado para nuevos desafíos.
Aquí hay una gran imagen que encontré que ilustra bien este punto:

Y sí, recuerde evitar el agotamiento y el descanso. Esto también es muy importante. Buena suerte
¿Qué les parece el artículo, amigos? Te invitamos a un
seminario web gratuito , que se llevará a cabo hoy a las 20.00. Como parte del seminario web, discutiremos cómo construir un sistema de procesamiento de datos efectivo y escalable para una pequeña empresa o startup con costos mínimos. Como práctica, le presentaremos las herramientas de procesamiento de datos de Google Cloud. Hasta pronto!