Sie sind auf Seite 1von 6

Hackathon Berexia

CONSIGNE:

1- Les groupes doivent être composés de deux personnes.

2- La fin du concours est prévue pour le 1 Novembre à 17h00

3- Chaque groupe doit fournir à la fin du concours :

a. Une présentation PPT (avec une démo vidéo).


b. Le code source.

4- L’utilisation d’internet est autorisée.

Bon courage

1
Data Transformation Manager

Définition
Une application de data transformation Y sert à transformer les données pour une application
destinataire X.

Transformer les données en masse sur l’application Y, aura comme fin utile de les corriger,
les regrouper et appliquer différentes opérations pour les rendre conforme et standard.
Une fois les différentes tâches réalisées, les données peuvent alors être visualiser pour
vérification des résultats.

Objectifs
L’application Y a pour objectif de transformer les données sur des process parallèle et non
séquentiel pour visualiser en fin du process les résultats sur un écran manipulable pour
vérification.

Contexte

L’objectif de ce concours est de réaliser un prototype d’une application de data transforming.

Voici les Huit points sur lesquels se baser :

1) Présentation du format de l’application

L’application doit être sous forme d’une Web basée sur Spring Cloud.

2) Lecture de données d’un fichier CSV :

Les données d’entrée seront des fichiers CSV contenant des données bien structurer :
 Un header :
Première ligne du fichier contiendra les colonnes de la structure de données.

 Un data block:
Les autres lignes du fichier seront les données de la structure.

 Séparateur:
Le séparateur ne sera pas dynamique est sera toujours le point-virgule « ; ».

La lecture des données nécessitera au moins un écran pour import des fichiers.
Notre concours sera basé sur deux fichiers inputs.

3) Exécuter des transformations sur les données :

Les transformations vont permettre de changer la structure des données en incluant


les colonnes et les données.

2
Les transformations seront :

 Select:

Le select doit assurer trois fonctionnalités :

1) Renommer les colonnes :


Le résultat de cette transformation sera une structure qui pourra avoir
les donner de la même colonne mais avec un nom de colonne
diffèrent.

2) Supprimer les colonnes :


Le résultat peut contenir moins de colonne que la structure d’entrée.

3) Filtrer les données selon un critère :


Le résultat peut contenir moins de lignes de données selon un critère
de filtrage bien défini.
Donc les lignes du résultat seront uniquement les données qui valide
les critères du filtre défini.

 Group

Le grouping des données a pour objectif de grouper les lignes d’une structure selon
des critéres bien définis

Les critéres seront:


 Colonnes base du grouping.
 Colonnes à grouper.

Selon le type de la colonne à grouper, la liste des opérations disponibles sera:

Colonnes Numeric:
Sum
Avg
Min
Max
Count
First (first row)
Last (last row)

Colonnes Date:
Min (oldest date)
Max (latest date)
Count
First (first row)
Last (last row)

Colonnes text:
Min (by alphabetical order)
Max (by alphabetical order)
Count

3
First (first row)
Last (last row)
Les colonnes qui ne sont ni base du grouping ni à grouper ne feront pas partie de la structure
résultante.

 Combine

Le combine est une transformation qui combine deux structures en se basant sur la
ressemblance d’une ou plusieures colonnes.

La structure résultante contiendra une partie des colonnes de chaque structure input.

L'entrée de cette transformation sera deux structures avec la liste des colonnes à
garder et puis les conditions de ressemblance de combinaison qui seront des
conditions tel que “str1.col1=str2.col2 AND str1.col3=str2.str2.col5”

4) Visualiser le résultat :

Une des fonctionalités les plus importantes est la visualisation des résultats des
transformations.

L'objectif de la visualisation est de pouvoir assurer la fiabilité des process, donc un


ecran de visualisation de données devra assurer les fonctionalités suivantes:
1. Affichage des données résultantes
2. Capacités de filtrer sur les données
3. Capacités de trier les lignes résultantes sur une colonnes bien précise.

5) Utiliser Spark Java :

Le data transforming est un process qui a pour objectif de standardiser les données,
ce qui veut dire avoir des données de différentes sources, et donc une grande
quantité de données.

Dans les cas réel, les systêmes de transformation de données traitent des fichiers
d'environ 5 millions de lignes ou plus.

Pour répondre à se besoin, l'utilisation de Spark est demandée pour assurer la


gestion distribuée.

6) Utiliser Angular :

Angular est un framework trés puissant pour la gestion des interfaces et surtout les
Single Page Application.

Angular propose plusieurs composents et bibliothéques permettant la manipulation


des tableaux avec des fonctionalitées avancés.

4
Dans notre cas Angular doit être utiliser pour creation des interfaces et visualisation
des données.

Une des bibliothéques Angular permettant la gestion des tableaux est NgGrid.

7) Architecture micro services avec Consul et Traefik reverse proxy :

L'architecture microservice assure une solution modulaire.

Pour cela les transformations doivent être developer en microservice


intercommuniquant sous le protocol REST.

Pour notre cas Consul doit être utiliser pour l'enregistrement des services et Traefik pour le
reverse proxy.

Un service proxy pour assurer l’orchestration des services doit être mis en place par l'équipe.

8) Méthodologie de test:

Les tests peuvent se faire, selon le choix de l’équipe, sous deux formes:

 Interfaces:

Les tests sur interfaces imposent le dévelopement des interfaces dédiées pour chaque
microservice.

 Outils de gestion REST:

L'utilisation des outils de gestion des requêtes REST peut être utiliser pour tester les
microservices.
Postman peut être un des outils.

Le jeux de données peut être créer manuellement mais devera validé les conditions définient
sur le paragraphe lecture de fichiers csv.

Les transformations à éxécuter sur les données d'entrées peuvent être définis par l'équipe, mais
deverons valider les conditions suivantes:

 Les transformations doivent être interconnecté et doivent former un schema de


transformations qui n’est pas séquenciel

 Le schema doit contenir au moin une transformation par type défini sur le paragraphe
Executer les transformations (au moin 1 select 1 group et 1 combine)

 Bien configurer les transformations pour donner un résultat fiable et couverant les
fonctionalitées définis pour chaque transformation.

La gestion du stockage de données intermediaire (résultat de chaque transformation sur le


schema) peut être assurer, selon le choix de l'équipe, soit en utilisant:
 Une base de données
 Des fichiers en mémoire

5
Fonctionalitée bonus
Avoir un schéma de transformation qui s'éxécute de bout en bout est l'objectif de notre
application. Mais pour bien assurer la fiabilité et la maintenabilité de la solution une fonctionalité
de debug doit exister.

La fonctionalité de debug est une fonctionalité permetant de choisir une transformation sur le
schema et la definir comme un breakpoint.

L'objectif de ce breakpoint et d’éxécuter le schema de transformations et s'arrêter à la


transformation défini comme breakpoint, et donc notre résultat ne sera pas celui de la dérniére
transformation sur le schema mais celui du breakpoint.

Pour assurer cela, il faudra assurer:

 Interconectivité:

Les transformations formant le schema doivent être bien connectés pour permettre la détection
des transformations qui impactent directement ou indirectement le résultat de notre breakpoint.

 Analyse des liens:

Avoir des transformations liées ne suffit pas, mais pour assurer le breakpoint, il faudra assurer
une analyse des liens pour pouvoir éxécuter uniquement les transformations nécessaire pour
avoir le résultat.
Une analyse des liens évitera l’éxécution des transformations qui n'ont aucun impact sur le
résultat attendu.
Cette analyse est faite pour assurer une grande performance d’éxécution et une optimisation
de ressources.