K

Concepts du Big Data

Introduction

Le Big Data fait référence à des ensembles de données qui sont trop volumineux ou trop complexes pour être traités par des outils de gestion de données traditionnels. Dans ce cours, nous allons explorer comment construire un pipeline de données complet en utilisant des technologies modernes.

Exemple Concret : ETL Demo

Pour illustrer ces concepts, nous avons créé un projet exemple complet disponible dans exemples/etl-demo/. Voici comment il fonctionne :

1. Extraction (Playwright)

// scraper/extract.js
// Scrape les prix des smartphones sur la Fnac
const products = await page.evaluate((sel) => {
  return Array.from(items).map((item) => ({
    name: item.querySelector(sel.NAME)?.innerText,
    price: item.querySelector(sel.PRICE)?.innerText,
    brand: item.querySelector(sel.BRAND)?.innerText,
    date: new Date().toISOString().split('T')[0],
  }))
})

2. Transformation (Python)

# scraper/transform.py
# Nettoie et agrège les données
def transform_data():
    df['price'] = df['price'].apply(clean_price)
    df['brand'] = df['brand'].str.upper()

    # Calcule des stats par marque
    stats = df.groupby('brand').agg({
        'price': ['mean', 'min', 'max', 'count']
    })

3. Chargement (Cassandra)

# scraper/load.py
# Stocke dans Cassandra avec des batch
batch.add(insert_product, (
    row['date'],
    uuid.uuid4(),
    row['name'],
    float(row['price']),
    row['brand'],
    True
))

4. API (Express)

// backend/server.js
// Expose les données via une API REST
app.get('/api/products', async (req, res) => {
  const query = 'SELECT * FROM prix_produits WHERE date = ?';
  const result = await client.execute(query, [today]);
  res.json(result.rows);
});

5. Frontend (Next.js)

// frontend/pages/index.js
// Affiche un tableau et un graphique
export default function Home() {
  const [products, setProducts] = useState([]);

  // Affiche les données
  return (
    <div>
      <table>...</table>
      <LineChart data={products}>...</LineChart>
    </div>
  );
}

Chronologie d'Exécution

  1. Extraction (toutes les 6 heures)

    • Le scraper visite la page Fnac
    • Extrait les données des produits
    • Sauvegarde en JSON (data/raw/products.json)
  2. Transformation (après l'extraction)

    • Charge le JSON brut
    • Nettoie les prix et les noms
    • Calcule les statistiques
    • Sauvegarde en CSV (data/processed/)
  3. Chargement (après la transformation)

    • Lit les CSV nettoyés
    • Insère dans Cassandra par batch
    • Met à jour les stats
  4. Visualisation (en temps réel)

    • L'API Express sert les données
    • Le frontend les affiche
    • Mise à jour automatique

Cette démo montre un pipeline ETL complet, de la collecte à la visualisation, en passant par le traitement et le stockage.

Les 5V du Big Data

  1. Volume: La quantité massive de données générées et stockées
  2. Vélocité: La vitesse à laquelle les données sont générées et traitées
  3. Variété: Les différents types et formats de données
  4. Véracité: La qualité et la fiabilité des données
  5. Valeur: La capacité à transformer les données en insights utiles

Notre Approche ETL (Extract, Transform, Load)

Dans ce cours, nous allons construire un pipeline ETL complet :

1. Extract (Sources de Données)

  • Multiples sources possibles :
    • Scraping web avec Playwright
    • Fichiers CSV/JSON
    • Data Lakes
    • APIs externes
    • Bases de données existantes
  • Collecte automatisée de données web
  • Gestion des données structurées et non structurées
  • Planification et orchestration du scraping

2. Transform (Python)

  • Nettoyage et préparation des données
  • Analyse avec Pandas
  • Agrégation et transformation

3. Load (Cassandra)

  • Stockage distribué avec Cassandra
  • Modélisation orientée requête
  • Optimisation des performances

Prochaines Étapes

Dans les sections suivantes, nous allons:

  1. Explorer l'architecture détaillée du système
  2. Configurer l'environnement de développement
  3. Implémenter chaque composant étape par étape
  4. Intégrer tous les composants ensemble
  5. Optimiser les performances