# ECE Big Data — travail réalisé sur Onyxia

Le dépôt du cours est conservé, avec les solutions sur la branche work/mi-ezzemouri-labs.
Le fichier progress.json relie chaque validation à son journal d'exécution.

| Chapitre | État vérifié |
|---|---|
| 01 Linux | Commandes, copies, déplacements, filtrage et suivi temporaire des logs validés |
| 02 Kubernetes | Service interne HTTP, 5 puis 2 réplicas, manifestes, mise à jour v2, échec v3 et rollback v1 validés |
| 02 Configuration | ConfigMaps et Secrets factices, variables et volumes validés |
| 02 Jobs | Job simple, retry, quatre pods parallèles et CronJob réel validés ; CronJobs suspendus après test |
| 03 uv | Projet Python empaqueté, CLI CSV/JSON/JSONL et dépendances verrouillées |
| 03 S3 | Upload, téléchargement identique, copie, métadonnées, s5cmd, URL signée et ingestion Kubernetes validés |
| 04 DuckDB | Requêtes du cours, cinq exercices, CLI Python paramétrée et benchmark CSV/Parquet validés |
| 05 dbt | Modèles Silver, tests, nettoyage des dates, normalisation, export Parquet et documentation générée |
| 05 Qualité | Contrôle ZIP/état avec référence GeoNames et comparaison view/table ; avertissement attendu sur les adresses synthétiques |
| 06 RDD | Blocs du cours et quatre exercices validés |
| 07 Spark SQL | DataFrame/SQL, dédoublonnage, Parquet, Iceberg, dates et trois variantes d'extraction ZIP validés |
| 08 Iceberg | Snapshots, append, time travel, évolution du schéma et exercices utilisateurs validés |
| 09 Polaris | Chart et plan d'accès préparés ; lint et rendu Helm validés ; non déployé |
| 10 Trino | Chart préparé ; lint et rendu Helm validés ; non déployé |

## Résultats

- Bronze : 50 utilisateurs et 2 829 commandes synthétiques.
- Équivalence dbt/Spark : différence symétrique de zéro ligne pour les deux jeux.
- Benchmark : 252 416 commandes ; CSV 29 574 123 octets, Parquet 11 426 016 octets.
- Les 288 commandes antérieures à la naissance de leur utilisateur ont été détectées. Les exercices dbt conservent les données brutes et neutralisent les dates de naissance invalides dans la couche Silver.
- Les tests de ZIP détectent les incohérences du générateur ; les régions non couvertes par la référence sont distinguées des erreurs.
- Iceberg commandes : 2 829 lignes avant les ajouts, 2 833 après ; lecture de l'ancien snapshot vérifiée.

## Adaptations Onyxia

Le cluster existant remplace minikube. Les exercices restent dans user-mi-ezzemouri-ece, car la création de namespaces est interdite. Le service pédagogique reste en ClusterIP. Les limites CPU/mémoire sont explicites. Le quota de huit pods impose de libérer les pods des exercices terminés.

L'image Jupyter ne créait pas le profil AWS default : il a été configuré dans le répertoire privé du service, sans clé dans les sources. L'ingestion utilise server-side apply pour éviter la limite de taille de l'annotation des ConfigMaps. L'URL signée utilise Signature V4 et l'adressage path-style.

Le jeu Silver de comparaison initial reste sous silver/dbt et silver/spark. La version enrichie des exercices dbt est sous silver/dbt_exercises. Le warehouse Iceberg est conservé pour Polaris.

## Fichiers utiles

- progress.json : contrôles exécutés et preuves.
- dbt-spark-equivalence.json : comparaison de toutes les lignes.
- lab04-benchmark-results.json : tailles et mesures observées.
- lab08-results.json : contrôles Iceberg.
- dataset-generator : projet uv, générateurs et lab_medallion.
- dbt-documentation.html : documentation dbt autonome.
- polaris/access-plan.json : comptes et privilèges prévus.
- polaris/rendered-review.yaml et trino/rendered-review.yaml : manifestes rendus, non appliqués.

## Travail restant

Polaris et Trino nécessitent la création de nouveaux comptes techniques et l'attribution de droits sur le catalogue. Rien de ce bootstrap n'a été appliqué. Le compte dev proposé dispose de CATALOG_MANAGE_ACCESS, CATALOG_MANAGE_METADATA et CATALOG_MANAGE_CONTENT. Le compte analyst dispose de TABLE_READ_DATA, TABLE_READ_PROPERTIES et CATALOG_READ_PROPERTIES.

Les exercices S3 qui activent le versioning, modifient les politiques du bucket ou suppriment définitivement des versions ne sont pas exécutés. Une politique de cycle de vie limitée au préfixe ece-lab-lifecycle/ est fournie pour revue. Aucun objet S3 existant n'a été supprimé.

Les modules 11 à 13 sont annoncés dans le syllabus mais leurs répertoires ne sont pas publiés dans la version examinée du dépôt.

## Reprise

Les scripts lab*.py et lab*.sh montrent les étapes exécutées. Les exercices de création sont conçus pour être exécutés dans l'ordre et sur un espace de lab préparé ; ne pas relancer aveuglément les étapes de création dans un environnement déjà rempli.

Référence ZIP : https://download.geonames.org/export/zip/US.zip — GeoNames, attribution et empreinte dans zip-reference-provenance.json. Ce référentiel ne remplace pas une validation d'adresse postale de production.
