Témoignage Collaborateur

ATLANSE_TémoignageCollab_WassimWassim – Data Engineer Azure

 

Je suis diplômé d’un master Innovation Marché et Science des données qui est un mélange entre la science des données (le Machine Learning) et le Big Data (le traitement des données massives). J’ai pu y étudier les technologies Hadoop, la distribution Hortonworks et tout ce qui concerne le Machine Learning comme les algorithmes, leur fonctionnement ainsi que la programmation en Scala, en Python et en Java.

Quel est ton parcours professionnel ?

J’ai effectué ce master en alternance chez un constructeur automobile. Je travaillais sur le traitement des données avec une partie BI où j’ai utilisé Qlik View pour aider à la décision. Je collectais les données issues de plusieurs sources (véhicules, vendeurs, clients), j’effectuais des transformations, des agrégations, des calculs et je fournissais les résultats aux quatre Data Manager (un par filiale : Paris, Lyon, Bordeaux et Côte d’Azur).

Sur la partie Big Data, j’analysais les fichiers log sur Elasticsearch, Logstash et Kibana. Les fichiers log permettent de tracer les événements comme par exemple l’exécution des serveurs. J’ai utilisé la stack ELK :

  • Elasticsearch: c’est comme un moteur de recherche qui permet de stocker et d’indexer les données,
  • Logstash: c’est l’outil qui va collecter les données et qui va les stocker dans Elasticsearch,
  • Kibana: c’est un outil qui va pointer sur les données d’Elasticsearch pour faire la représentation sous forme de graphique.

La finalité était de vendre plus de voitures et de convaincre les clients de faire réparer les voitures chez ce constructeur.

Par la suite, je suis intervenu au sein d’une grande banque française sur une mission dédiée Big Data dans le cadre de la collecte des données concernant les ventes et les achats des fonds des Asset Managers (Clients Grands comptes de la Banque). J’ai travaillé principalement autour de la distribution Hortonworks (Hadoop, Hive, Spark), sur le développement des API REST et sur SQL Server.

La finalité de ce projet, après avoir réalisé certains calculs de KPI (valeur de chaque fond, chaque jour), était de pouvoir prendre la décision concernant l’achat ou la vente de leur fond.

J’ai également réalisé une mission au sein de la Banque Centrale nationale sur un projet appelé « Anacrédit ». Ce projet, en collaboration avec la Banque Centrale Européenne, permet à la Banque Centrale d’indiquer aux banques si elles ont le droit de continuer à accorder des crédits à leurs clients ou non.

Chaque banque, autre que la Banque Centrale nationale, envoie toutes les données concernant les demandes de crédit de leurs clients. Nous collections ces données, développions des API pour passer ces données dans une distribution Hortonworks, et développions plusieurs jobs en Spark Java. Ces jobs permettaient de calculer des KPI et notamment le risque pour chaque client de ne pas payer le crédit demandé.

Pour chaque banque, la Banque Centrale va avoir de la visibilité sur les crédits accordés et va pouvoir limiter ou au contraire augmenter les accords de crédit proposés par les banques.

Dans le secteur de l’Assurance, j’ai travaillé en environnement Azure sur le traitement des données. Je travaillais entre l’équipe de Data Engineer pour le traitement des données en Spark Scala sur Azure et l’équipe Infrastructure / DevOps. Je suis intervenu sur la préparation des DataLab, des Use Case, des groupes AD, des linked services qui sont des composants d’Azure. J’ai préparé l’infrastructure pour ces deux équipes et travaillé sur le traitement des données.

Quelles sont tes missions ?

J’interviens actuellement sur un projet stratégique chez un acteur majeur de la Distribution, qui reprend les données de différentes filiales pour prédire les ventes de 2023.

Mon rôle est de préparer les données, de les nettoyer et de les transformer pour que les Data Scientist puissent réaliser des prédictions et que les Métiers puissent prendre des décisions.

Au démarrage, il s’agit de collecter les données qui proviennent de différentes sources (tickets de caisse, points de vente…) et sont stockées au sein de différentes bases de données : Oracle, SQL Server par exemple. Et de les extraire afin de les stocker dans une zone dite brute (zone où les données sont mises telles quelles) au sein du cloud Azure. Sur le Cloud, les serveurs sont très puissants et sont capables de stocker n’importe quel volume de données.

Il faut également traiter ces données c’est-à-dire les agréger, les nettoyer (suppression de doublons, correction d’erreurs…) et effectuer des calculs de KPI (indicateurs de performance).

Je développe des pipelines en Spark Scala sur Azure Data Factory (ADF). Ces pipelines permettent de récupérer les données déposées par l’équipe Métier dans certaines zones et d’effectuer des manipulations de fichiers / de données (par exemple : déplacement de fichiers d’un serveur à un autre, validation des fichiers). Ensuite, ces pipelines vont lancer des jobs (par exemple : un flux d’entrée de données ou un flux d’alimentation d’une zone du DataHub) sur Databricks, qui vont traiter ces fichiers (transformation et validation des données) puis alimenter une zone brute, puis une zone raffinée (données transformées), et enfin la zone optimisée (données prêtes à être exploitées par les Data Scientists et les équipes Métiers).

Le codage permet de faire des transformations et calculs en Spark (que l’on ne peut pas faire avec les pipelines), des vérifications, des déplacements et copies de données.

L’optimisation des temps de traitement est également un élément fondamental parce que l’idée du Big Data en général, c’est de pouvoir traiter des données (Les 3 V du Big Data : Variété : CSV, texte, log, vidéo…, structurées, non structurées, semi structurées, Volume : téraoctets) que l’on ne pouvait pas traiter avec les outils de BI classique, Vitesse : temps de réponse ultra rapide.

Quelles sont les qualités requises pour mener à bien ces missions ?

Le métier de Data Engineer est plutôt technique et nécessite de savoir coder en Spark Scala, Spark Python ou Spark Java notamment quand on travaille sur Azure ou n’importe quel Cloud. La force de Azure est qu’il supporte plusieurs langages.

Lorsque l’on travaille sur Azure, il est également important de connaître Azure Databricks, système de stockage des fichiers mais également Azure Data Factory, qui permet la récupération, la préparation et la transformation de toutes les données d’une entreprise. Certains clients n’utilisent pas Azure Data Factory : ils développent tout de A à Z sous un autre environnement de développement comme IntelliJ IDEA ou Eclipse et poussent un fichier Jar sous forme d’une bibliothèque sur Azure. Azure va automatiquement avec du paramétrage JSON lancer ces Jar et effectuer le traitement. Cela est beaucoup plus long en termes de développement par rapport à ADF.

C’est bien aussi de comprendre la notion des groupes AD, des ressources Groupe, des Event Hubs, des Stream Analytics pour le traitement des données en temps réel sur Azure.

Il est plus important de maîtriser un Cloud plutôt que d’avoir des connaissances sur chacun d’eux.

Spark n’est pas un langage de programmation, c’est un outil qui traite les données de façon distribuée et parallélisée. Il interprète le langage avec lequel on a codé et le lance avec un driver et des workers (il divise la tâche en sous tâches, puis lance sur plusieurs workers ces tâches pour qu’elles soient traitées plus rapidement de manière efficace) d’où l’intérêt de bien comprendre son fonctionnement.

La connaissance des langages de données comme Scala (ou Python, Java, SQL) et des outils de gestion de bases de données est également indispensable pour exercer ce métier.

En plus des compétences techniques à maîtriser, je dirais qu’il faut être force de proposition et identifier rapidement ce qu’il est nécessaire d’améliorer.

Par exemple, avoir déjà travaillé sur des projets similaires permet de détecter rapidement les points d’amélioration dans la programmation, l’optimisation du code, les temps d’exécution… et de proposer les solutions les plus appropriées en fonction de notre expérience.

Ce métier nécessite de la concentration notamment lors du recueil du besoin auprès du Data Analyst ou du chef de projet. Il est important de bien comprendre ce qui est demandé, de poser toutes les questions qui permettront de clarifier la demande et de reformuler les exigences.

Qu’est-ce qui te plaît le plus ?

Ce que j’apprécie, c’est le fait de faire parler de gros volumes de données avec le Big Data ce qui n’était pas possible quand je faisais de la BI car je rencontrais des problèmes de performance.

J’aime aussi le fait de pouvoir travailler dans n’importe quel secteur d’activité à partir du moment où on connait la partie technique.

Le Cloud et le Big Data sont devenus indissociables dans un monde data-driven et de travailler sur les deux pour une meilleure exploitation des données me passionne. Surtout qu’avec le Big Data, il est également possible de travailler sur des projets d’Intelligence Artificielle, dans le cadre de machine learning (apprentissage automatique de la machine).