Skip to content

ETL

Last reviewed: 2026-05-29

Purpose: Extract, Transform, Load data pipeline training โ€” covering data ingestion pipelines, transformations, and batch/stream processing patterns.

Contents

Overview

This folder covers ETL (Extract, Transform, Load) pipeline design and implementation, with practical references to the streaming data pipelines in the training ecosystem.

ETL Pipeline Concepts

  • Extract โ€” Pulling data from sources (databases, APIs, SSE streams, flat files)
  • Transform โ€” Cleaning, normalizing, enriching, and structuring data (JSON parsing, type casting, field extraction)
  • Load โ€” Writing to targets (OLAP databases, data lakes, message queues)

Real-World Examples

The training ecosystem includes working examples of ETL patterns:

Streaming ETL (Wikimedia โ†’ Kafka โ†’ Pinot)

  1. Extract โ€” SSE client (wiki.py) consumes live Wikipedia event stream from stream.wikimedia.org
  2. Transform โ€” The wiki_to_kafka.py script serializes events (datetime โ†’ ISO format, JSON โ†’ encoded bytes)
  3. Load โ€” Produce to Kafka topic wiki-events with batching (flush every 100 events)

Batch ETL (JSON Files โ†’ Pinot)

  1. Extract โ€” JSON data files (check-in/checkout events, FMEA events, license usage reports)
  2. Transform โ€” Pinot table configs define transform functions using JSONPATH extraction and JSONFORMAT serialization
  3. Load โ€” Batch ingestion via Pinot OFFLINE tables (fnmea-events-table-OFFLINE.json)

Schema Inference

  • InferSchemaFromjson.sh โ€” Automatically infer Pinot schema from JSON data files
  • InferMetaEventFromjson.sh โ€” Infer meta-event schema for complex nested data