Welcome to the comprehensive data engineering course! This project will take you through building a complete, production-ready data pipeline from scratch using modern tools and cloud services.
This hands-on course teaches you to build an end-to-end data engineering pipeline that processes e-commerce data using industry-standard tools. You'll go from raw data to actionable insights while learning best practices used by data engineering teams worldwide.
- Data Pipeline: Complete ETL process with synthetic e-commerce data
- Cloud Integration: AWS S3 data lake for scalable storage
- Workflow Orchestration: Professional orchestration with Prefect
- Containerization: Production-ready Docker deployment
- Data Processing: Advanced transformations and business metrics
π Sample Data β π€ S3 Upload β π§Ή Processing β π Metrics β βοΈ S3 Storage
(CSV Files) (Raw Data) (Transform) (Analytics) (Processed)
β β β β β
Python Scripts β boto3/S3 API β Pandas/ETL β Aggregations β Data Lake
β
π Prefect Flows (Orchestration)
β
π³ Docker Containers (Production)
| Category | Technology | Purpose |
|---|---|---|
| Language | Python 3.12 | Core development language |
| Cloud Platform | AWS S3 | Scalable data lake storage |
| Orchestration | Prefect 3.x | Workflow management & monitoring |
| Data Processing | Pandas, Polars | Data transformation & analysis |
| Containerization | Docker + Docker Compose | Production deployment |
| Data Validation | Great Expectations | Data quality assurance |
| Package Management | pip, requirements.txt | Dependency management |
Hands-On-Project/
βββ π .env # AWS credentials (create this!)
βββ π data/ # Sample datasets
β βββ raw/ # Raw CSV files
β βββ customers.csv # Customer data
β βββ products.csv # Product catalog
β βββ orders.csv # Order transactions
β βββ order_items.csv # Order line items
β βββ reviews.csv # Customer reviews
βββ π§ data-pipeline/ # Main pipeline code
β βββ π requirements.txt # Python dependencies
β βββ π³ docker-compose.yml # Container orchestration
β βββ π src/ # Source code
β β βββ data_ingestion/ # S3 upload scripts
β β β βββ s3_uploader.py # Upload data to AWS S3
β β βββ data_processing/ # ETL transformations
β β β βββ etl_processor.py # Clean & transform data
β β βββ orchestration/ # Workflow management
β β βββ prefect_flows.py # Prefect orchestration
β βββ π config/ # Configuration files
β β βββ aws_config.yaml # AWS settings
β β βββ prefect_config.yaml # Prefect configuration
β β βββ data_schemas.yaml # Data validation rules
β βββ π infrastructure/ # Container infrastructure
β β βββ docker/
β β βββ Dockerfile # Container build instructions
β βββ π tests/ # Test files
β βββ test_aws_connection.py # AWS connectivity tests
βββ π CONTAINERIZATION_GUIDE.md # Complete Docker guide
- Python 3.10+ installed (recommended: 3.12)
- AWS Account with S3 access
- Docker Desktop installed and running
- Git for version control
- Text Editor (VS Code recommended)
-
Clone/Download the project
cd "D:\Hands-On-Project"
-
Create virtual environment
python -m venv venv venv\Scripts\activate # Windows
-
Install dependencies
cd data-pipeline pip install -r requirements.txt -
Configure AWS credentials Create
.envfile in project root:AWS_ACCESS_KEY_ID=your_access_key_here AWS_SECRET_ACCESS_KEY=your_secret_key_here AWS_DEFAULT_REGION=us-east-1 AWS_S3_BUCKET_NAME=your-unique-bucket-name
-
Test AWS connection
python tests/test_aws_connection.py
β Should show: "Connection successful!"
-
Extract sample data
# Data should already be extracted in data/raw/ folder ls ../data/raw/ # Should show 5 CSV files
-
Upload raw data to S3
python src/data_ingestion/s3_uploader.py
β Should upload 5 CSV files to S3
-
Process data
python src/data_processing/etl_processor.py
β Should clean data and create business metrics
-
Run orchestrated pipeline
python src/orchestration/prefect_flows.py
β Should show complete pipeline execution
-
Start Prefect server
prefect server start
-
Access Prefect UI Open: http://localhost:4200 β Should show Prefect dashboard
-
View pipeline execution
- See flow runs, tasks, and logs
- Monitor performance and errors
-
Build and start containers
cd "D:\Hands-On-Project" docker-compose -f data-pipeline/docker-compose.yml up --build -d
-
Run containerized pipeline
docker exec -it data-pipeline-data-pipeline-1 python data-pipeline/src/orchestration/prefect_flows.py -
Access containerized Prefect UI Open: http://localhost:4200 β Should show pipeline execution in containers
- β ETL vs ELT patterns
- β Data lake architecture
- β Batch processing concepts
- β Error handling strategies
- β AWS S3 data lake setup
- β IAM permissions and security
- β Data partitioning strategies
- β Cost optimization techniques
- β Prefect flow design
- β Task dependencies
- β Scheduling and triggers
- β Monitoring and alerting
- β Docker containerization
- β Multi-service architecture
- β Environment management
- β Scaling strategies
- β Data validation patterns
- β Unit testing for data pipelines
- β Great Expectations framework
- β Pipeline monitoring
Your pipeline processes realistic e-commerce data:
| Dataset | Records | Description |
|---|---|---|
| customers.csv | 1,000+ | Customer profiles, demographics |
| products.csv | 500+ | Product catalog, categories, pricing |
| orders.csv | 2,000+ | Order transactions, timestamps |
| order_items.csv | 6,000+ | Individual items per order |
| reviews.csv | 1,500+ | Customer reviews and ratings |
β "AWS credentials not found"
- Solution: Create
.envfile with valid AWS credentials - Check: File is in project root, not inside data-pipeline folder
β "Docker daemon not running"
- Solution: Start Docker Desktop application
- Check: Docker icon in system tray shows running status
β "Can't connect to Prefect server"
- Solution: Wait 30 seconds after starting containers
- Check: http://localhost:4200 loads properly
β "Python module not found"
- Solution: Activate virtual environment and reinstall requirements
- Check:
pip listshows all required packages
By the end of this course, you'll have built:
β
Production-ready data pipeline processing real e-commerce data
β
Cloud-based data lake on AWS S3
β
Professional orchestration with Prefect monitoring
β
Containerized deployment ready for any environment
β
Comprehensive understanding of modern data engineering
After completing this project:
- Add to your portfolio - Showcase on GitHub and LinkedIn
- Extend functionality - Add real-time streaming, machine learning
- Learn advanced tools - Apache Airflow, dbt, Snowflake
- Apply for roles - Data Engineer, Analytics Engineer, Platform Engineer
- Full Documentation: See
CONTAINERIZATION_GUIDE.md - Issues: Check troubleshooting section above
- Questions: Review code comments and documentation
- Best Practices: Follow the patterns in provided code
π― Ready to become a data engineer? Let's build something amazing! π