Le service de vente de l’entreprise LatDior Data cherche un Data Engineer pour mettre en place une application Spark/Scala/SBT pour la gestion des contrats. L’application doit être capable de traiter les types de fichiers suivants:
- 📁 JSON
- 📁 CVS
- 📁 Parquet
- 📁 ORC
- 📁 XML
Pour la version 1, vous allez intégrer uniquement le traitement des fichiers CSV et JSON.
❖ Vous serez obligé de réaliser les développements avec:
- 🛠️ IntelliJ IDEA
- 🛠️ Sbt
- 🛠️ Scala 2.12.15
- 🛠️ Java 1.8
- 🛠️ Spark
❖ Le respect du découpage du code est impératif. Sans le respect du découpage défini, vos développements ne seront pas acceptés.
❖ Un passage de connaissance sera organisé dès votre arrivée.
- Exemple de CVS avec séparateur #
- Exemple de JSON
-
Prepare Appli Args 📄 Args.scala
-
Parser FileConf 📄 ConfigurationParser.scala 📄 FileReaderUsingIOSource.scala
-
Objet CsvReader 📄 Reader.scala 📄 CsvReader.scala
-
JsonReader
- Coder la classe JsonReader de la même façon que la classe CsvReader mais avec ses propres attributs.
- La classe héritera le trait Reader.
- Elle doit contenir une fonction
read
qui permet de lire un fichier JSON et retourne un DataFrame en se basant sur les attributs de la classe JsonReader provenant du fichier de confreader_json.json
.
-
Objet ServiceVente 📄 ServiceVente.scala
-
def calculTTC(): DataFrame
- Calcule le TTC => HTT+TVA*HTT, le TTC doit être arrondi à 2 chiffres après la virgule.
- Supprime la colonne TVA, HTT.
-
Extract_Date_End_Contrat_Ville
- Créer une nouvelle colonne
Date_End_contrat
etVille
en utilisant la méthodeselect from_json
etregexp_extract
pour extraireYYYY-MM-DD
. - Supprime la colonne
metaData
.
- Créer une nouvelle colonne
-
Contrat_Status
- Créer une nouvelle colonne
Contrat_Status
avec "Expired" si le contrat a expiré et sinon "Actif".
- Créer une nouvelle colonne
-
- Type JSON
- Type CSV
Ce projet vise à automatiser la gestion des contrats pour l’entreprise LatDior Data en utilisant les technologies Spark, Scala et SBT, développées sous IntelliJ IDEA.