Skip to content

Latest commit

 

History

History
95 lines (62 loc) · 3.49 KB

README.md

File metadata and controls

95 lines (62 loc) · 3.49 KB

🌟 Projet Spark Scala Sbt sous IntelliJ 🌟

👤 Auteur : Mr MEJRI Salam


📚 Contexte Projet

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.


🔧 Contraintes Techniques

❖ 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.


📂 Découpage du code

sbt.build

📄 Configuration sbt.build

📁 Type CSV

📄 Fichier CSV

📁 Type JSON

📄 Fichier JSON

📝 Présentation des données

  • Exemple de CVS avec séparateur #
  • Exemple de JSON

🛠️ Présentation de l’existant

  • 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 conf reader_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 et Ville en utilisant la méthode select from_json et regexp_extract pour extraire YYYY-MM-DD.
      • Supprime la colonne metaData.
    • Contrat_Status

      • Créer une nouvelle colonne Contrat_Status avec "Expired" si le contrat a expiré et sinon "Actif".

🗃️ Main Configuration

  • Type JSON
  • Type CSV

🖥️ MainBatch

📄 MainBatch.scala


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.