Bonjour encore! Le titre de l'article parle de lui-même. En prévision du début du cours
«Ingénieur de données», nous vous suggérons de déterminer qui sont les ingénieurs de données. L'article contient de nombreux liens utiles. Bonne lecture.
Un guide simple sur la façon d'attraper la vague d'ingénierie des données et de l'empêcher de vous entraîner dans l'abîme.On a l'impression que tout le monde veut aujourd'hui devenir Data Scientist. Mais qu'en est-il de l'ingénierie des données?
Il s'agit essentiellement d'une sorte d'hybride d'un analyste de données et d'un scientifique des données; Un ingénieur de données est généralement responsable de la gestion des flux de travail, des pipelines de traitement et des processus ETL . En raison de l'importance de ces fonctions, il s'agit actuellement d'un autre jargon professionnel populaire qui gagne activement du terrain.
Des salaires élevés et une demande énorme ne sont qu'une petite partie de ce qui rend ce travail extrêmement attrayant! Si vous voulez rejoindre les rangs des héros, il n'est jamais trop tard pour commencer à apprendre. Dans cet article, j'ai rassemblé toutes les informations nécessaires pour vous aider à faire les premiers pas.
Commençons donc!
Qu'est-ce que l'ingénierie des données?Honnêtement, il n'y a pas de meilleure explication que celle-ci:
«Un scientifique peut découvrir une nouvelle étoile, mais ne peut pas la créer. Il devra demander à l'ingénieur de le faire pour lui. »
–Gordon Lindsay Glegg
Ainsi, le rôle d'un ingénieur de données est assez important.
Du nom, il résulte que l'ingénierie des données est associée aux données, à savoir à leur livraison, leur stockage et leur traitement. En conséquence, la tâche principale des ingénieurs est de fournir une infrastructure fiable pour les données. Si nous examinons la hiérarchie des besoins en IA, l'ingénierie des données prend les 2 à 3 premières étapes:
collecte, déplacement et stockage, préparation des données .
Que fait un ingénieur de données?Avec l'avènement du big data, le domaine de responsabilité a radicalement changé. Auparavant, ces experts ont écrit de grandes requêtes SQL et dépassé les données à l'aide d'outils tels que Informatica ETL, Pentaho ETL, Talend, mais maintenant les exigences pour les ingénieurs de données ont augmenté.
La plupart des entreprises ayant des postes vacants pour le poste d'ingénieur des données ont les exigences suivantes:
- Excellente connaissance de SQL et Python.
- Expérience avec les plateformes cloud, en particulier Amazon Web Services.
- La connaissance de Java / Scala est préférable.
- Bonne compréhension des bases de données SQL et NoSQL (modélisation des données, stockage des données).
Gardez à l'esprit que ce n'est que le plus nécessaire. À partir de cette liste, nous pouvons supposer que les ingénieurs de données sont des spécialistes dans le domaine du développement logiciel et du backend.
Par exemple, si une entreprise commence à générer une grande quantité de données à partir de diverses sources, votre tâche en tant qu'ingénieur des données consiste à organiser la collecte d'informations, leur traitement et leur stockage.
La liste des outils utilisés dans ce cas peut différer, tout dépend du volume de ces données, de la rapidité de leur réception et de leur hétérogénéité. La plupart des entreprises ne rencontrent pas du tout de données volumineuses.Par conséquent, en tant que référentiel centralisé, le soi-disant référentiel de données, vous pouvez utiliser une base de données SQL (PostgreSQL, MySQL, etc.) avec un petit ensemble de scripts qui dirigent les données vers le référentiel.
Les géants de l'informatique comme Google, Amazon, Facebook ou Dropbox ont des exigences plus élevées: la connaissance de Python, Java ou Scala.
- Expérience avec les mégadonnées: Hadoop, Spark, Kafka.
- Connaissance des algorithmes et des structures de données.
- Comprendre les bases des systèmes distribués.
- Une expérience avec des outils de visualisation de données tels que Tableau ou ElasticSearch sera un gros plus.
Autrement dit, il y a une nette évolution vers les mégadonnées, notamment dans leur traitement à des charges élevées. Ces sociétés ont augmenté les exigences de tolérance aux pannes du système.
Ingénieurs de données Vs. données scientifiques
Eh bien, c'était une comparaison simple et amusante (rien de personnel), mais en fait, tout est beaucoup plus compliqué.Tout d'abord, vous devez savoir qu'il existe une grande ambiguïté dans la distinction entre les rôles et les compétences d'un data scientist et d'un data engineer. Autrement dit, vous pouvez facilement être intrigué par le type de compétences nécessaires pour un ingénieur de données performant. Bien sûr, certaines compétences chevauchent les deux rôles. Mais il existe également un certain nombre de compétences diamétralement opposées.
La science des données est une affaire sérieuse, mais nous nous dirigeons vers un monde doté d'une science des données fonctionnelle où les praticiens peuvent faire leurs propres analyses. Pour utiliser des pipelines de données et des structures de données intégrées, vous avez besoin d'ingénieurs de données, pas de scientifiques.
Un ingénieur de données est-il plus recherché qu'un data scientist?- Oui, car avant de pouvoir faire un gâteau aux carottes, vous devez d'abord ramasser, éplucher et faire le plein de carottes!
Un ingénieur de données connaît mieux la programmation que n'importe quel scientifique des données, mais en matière de statistiques, c'est exactement le contraire.
Mais voici l'avantage d'un ingénieur de données: sans lui, la valeur du modèle prototype, le plus souvent constitué d'un fragment de code de qualité terrible dans un fichier Python, reçu d'un data scientist et donnant en quelque sorte un résultat, tend à zéro.
Sans ingénieur de données, ce code ne deviendra jamais un projet et aucun problème commercial ne sera efficacement résolu. Un ingénieur de données essaie de transformer tout cela en un produit.
Informations de base qu'un ingénieur de données doit connaître
Donc, si ce travail vous éveille et que vous êtes enthousiaste - vous pouvez l'apprendre, vous pouvez maîtriser toutes les compétences nécessaires et devenir une véritable rock star dans le domaine du développement de données. Et, oui, vous pouvez le faire même sans compétences en programmation ou autres connaissances techniques. C'est difficile, mais possible!
Quelles sont les premières étapes?Vous devriez avoir une idée générale de ce qui est quoi.
Tout d'abord, l'ingénierie des données se réfère à l'informatique. Plus précisément, vous devez comprendre des algorithmes et des structures de données efficaces. Deuxièmement, étant donné que les ingénieurs de données travaillent avec des données, une compréhension des principes de fonctionnement des bases de données et des structures qui les sous-tendent est nécessaire.
Par exemple, les bases de données SQL régulières de B-tree sont basées sur la structure de données de B-Tree, ainsi que dans les référentiels distribués modernes, LSM-Tree et d'autres modifications de table de hachage.
* Ces étapes sont basées sur un merveilleux article d' Adil Khashtamov . Donc, si vous connaissez le russe, soutenez cet auteur et lisez son article .1. Algorithmes et structures de donnéesL'utilisation de la bonne structure de données peut améliorer considérablement les performances de l'algorithme. Idéalement, nous devrions tous étudier les structures de données et les algorithmes dans nos écoles, mais cela est rarement couvert. En tout cas, il n'est jamais trop tard pour faire connaissance.
Voici donc mes cours gratuits préférés pour l'apprentissage des structures de données et des algorithmes:
De plus, n'oubliez pas le travail classique sur les algorithmes de Thomas Cormen -
Introduction to Algorithms . C'est la référence parfaite lorsque vous avez besoin de vous rafraîchir la mémoire.
- Pour améliorer vos compétences, utilisez Leetcode .
Vous pouvez également plonger dans le monde des bases de données avec les vidéos incroyables de l'Université Carnegie Mellon sur Youtube:
2. Apprentissage de SQLToute notre vie est constituée de données. Et pour extraire ces données de la base de données, vous devez "parler" avec elles dans une seule langue.
SQL (Structured Query Language) est un langage de communication de données. Peu importe ce que quelqu'un dit, SQL a vécu, est vivant et vivra très longtemps.
Si vous êtes en développement depuis longtemps, vous avez probablement remarqué que des rumeurs sur la mort imminente de SQL apparaissent périodiquement. Le langage a été développé au début des années 70 et est toujours très populaire parmi les analystes, les développeurs et les amateurs.
Sans connaissance de SQL, il n'y a rien à faire en ingénierie des données, car vous devrez inévitablement créer des requêtes pour récupérer des données. Tous les magasins de Big Data modernes prennent en charge SQL:
- Amazon redshift
- HP Vertica
- Oracle
- SQL Server
... et bien d'autres.
Pour analyser une grande couche de données stockées dans des systèmes distribués tels que HDFS, des mécanismes SQL ont été inventés: Apache Hive, Impala, etc. Vous voyez, ça n'ira nulle part.
Comment apprendre SQL? Faites-le en pratique.
Pour ce faire, je recommanderais de lire un excellent tutoriel, qui, soit dit en passant, est exempt de
Mode Analytics .
- SQL Medium
- Combiner des données en SQL
Une caractéristique distinctive de ces cours est la présence d'un environnement interactif dans lequel vous pouvez écrire et exécuter des requêtes SQL directement dans le navigateur. La ressource
SQL moderne ne sera pas redondante. Et vous pouvez appliquer ces connaissances dans les
tâches Leetcode de la section Bases de données.
3. Programmation en Python et Java / ScalaPourquoi il vaut la peine d'apprendre le langage de programmation Python, j'ai déjà écrit dans l'article
Python vs R. Choisir le meilleur outil pour l'IA, le ML et la science des données . Pour Java et Scala, la plupart des outils de stockage et de traitement d'énormes quantités de données sont écrits dans ces langages. Par exemple:
- Apache Kafka (Scala)
- Hadoop, HDFS (Java)
- Apache Spark (Scala)
- Apache Cassandra (Java)
- HBase (Java)
- Apache Hive (Java)
Pour comprendre le fonctionnement de ces outils, vous devez connaître les langues dans lesquelles ils sont écrits. L'approche fonctionnelle de Scala vous permet de résoudre efficacement les tâches de traitement parallèle des données. Python, malheureusement, ne peut pas se vanter de vitesse et de traitement parallèle. En général, la connaissance de plusieurs langages et paradigmes de programmation affecte bien l'étendue des approches de résolution des problèmes.
Pour vous immerger dans le langage Scala, vous pouvez lire
Programmation en Scala de l'auteur du langage. Twitter a également publié un bon guide d'introduction -
Scala School .
Quant à Python, je trouve
Fluent Python le meilleur livre de milieu de gamme.
4. Outils Big DataVoici une liste des outils les plus populaires dans le monde du Big Data:
- Étincelle Apache
- Apache kafka
- Apache Hadoop (HDFS, HBase, Hive)
- Apache cassandra
Vous pouvez trouver plus d'informations sur la création de grands blocs de données dans cet incroyable
environnement interactif . Les outils les plus populaires sont Spark et Kafka. Ils valent vraiment la peine d'être explorés, il est conseillé de comprendre comment ils fonctionnent de l'intérieur. Jay Kreps (co-auteur de Kafka) a publié en 2013 l'ouvrage monumental
The Log: ce que tout développeur de logiciels devrait savoir sur l'abstraction de l'agrégation de données en temps réel , soit dit en passant, les principales idées de ce Talmud ont été utilisées pour créer Apache Kafka.
5. Plateformes cloud
La connaissance d'au moins une plateforme cloud figure sur la liste des exigences de base pour les candidats au poste d'ingénieur de données. Les employeurs préfèrent Amazon Web Services, suivi de la plate-forme cloud de Google, et ferme les trois premiers Microsoft Azure.
Vous devez bien connaître Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.
6. Systèmes distribuésTravailler avec des mégadonnées implique la présence de grappes d'ordinateurs fonctionnant indépendamment, dont la communication s'effectue via le réseau. Plus le cluster est grand, plus la probabilité de défaillance de ses nœuds membres est grande. Pour devenir un expert en données cool, vous devez vous plonger dans les problèmes et les solutions existantes pour les systèmes distribués. Cette zone est ancienne et complexe.
Andrew Tanenbaum est considéré comme un pionnier dans ce domaine. Pour ceux qui n'ont pas peur de la théorie, je recommande son livre
Distributed Systems , pour les débutants cela peut sembler compliqué, mais cela vous aide vraiment à affiner vos compétences.
Je trouve
Designing Data-intensive Applications par Martin Kleppmann le meilleur livre d'introduction. Soit dit en passant, Martin a un merveilleux
blog . Son travail aidera à systématiser les connaissances sur la construction d'une infrastructure moderne pour le stockage et le traitement des mégadonnées.
Pour ceux qui aiment regarder des vidéos, il y a un cours sur les
systèmes informatiques distribués sur Youtube.
7. Pipelines de données
Les pipelines de données sont ce dont vous ne pouvez pas vous passer en tant qu'ingénieur des données.
La plupart du temps, l'ingénieur des données construit la date dite du pipeline, c'est-à-dire qu'il crée le processus de livraison des données d'un endroit à un autre. Il peut s'agir de scripts utilisateur qui accèdent à l'API de service externe ou effectuent une requête SQL, complètent les données et les placent dans un stockage centralisé (entrepôt de données) ou un stockage de données non structuré (lac de données).
Pour résumer: liste de contrôle principale de l'ingénieur des données
Pour résumer, vous avez besoin d'une bonne compréhension des éléments suivants:
- Systèmes d'information;
- Développement de logiciels (Agile, DevOps, Techniques de conception, SOA);
- Systèmes distribués et programmation parallèle;
- Principes fondamentaux des bases de données - planification, conception, exploitation et dépannage;
- Concevoir des expériences - tests A / B pour prouver des concepts, déterminer la fiabilité, les performances du système et également pour développer des moyens fiables pour fournir rapidement de bonnes solutions.
Ce ne sont que quelques exigences pour devenir ingénieur de données, alors étudiez et comprenez les systèmes de données, les systèmes d'information, la livraison / déploiement / intégration continue, les langages de programmation et d'autres sujets en informatique (pas dans tous les domaines).
Et enfin, la dernière mais très importante chose que je veux dire.Le chemin pour devenir Data Engineering n'est pas aussi simple qu'il y paraît. Il ne pardonne pas, est frustré, et vous devez vous y préparer. Certains points de ce parcours peuvent vous inciter à quitter. Mais c'est un vrai travail et un processus éducatif.
Ne l'embellissez pas dès le départ. Le but du voyage est d'apprendre autant que possible et de se préparer à de nouveaux défis.
Voici une excellente image que j'ai rencontrée qui illustre bien ce point:

Et oui, n'oubliez pas d'éviter l'épuisement professionnel et le repos. Ceci est également très important. Bonne chance
Comment aimez-vous l'article, mes amis? Nous vous invitons à un
webinaire gratuit , qui se tiendra aujourd'hui à 20h00. Dans le cadre du webinaire, nous discuterons de la manière de créer un système de traitement de données efficace et évolutif pour une petite entreprise ou une start-up à un coût minimal. En pratique, nous vous présenterons les outils de traitement des données de Google Cloud. A très bientôt!