
Explore the evolution from data warehouses to data lakes and data lake houses, and see how Apache Iceberg enables lake house pattern with schema enforcement, acid transactions, and scalable storage.
Explore how Apache Iceberg emerged from the evolution from traditional databases to cloud-scale data lakes, delivering unified metadata management, time travel, and engine-agnostic querying across Spark, Flink, and more.
Explore Iceberg's schema evolution, ACID transactions, and flexible partitioning to evolve data models without rewrites, enabling time travel, predicate pushdown, and statistics-based pruning, plus z-order clustering.
Apache Iceberg's background and architecture spotlight a metadata layer between storage and compute engines, enabling time travel and atomic snapshots that provide ACID transactions.
Create an Apache Iceberg table with PyIceberg in Python, define a schema and namespace, insert data transactionally, then select records and explore partitioning, schema evolution, and time travel.
Learn to query Apache Iceberg tables with PyIceberg by setting up a local catalog, loading tables, and selecting only required columns in a Jupyter notebook for efficient data access.
Filter data in Iceberg tables using storage-layer predicates to skip non-matching files, leveraging a local catalog and product table with row filters like equal, greater than, and in.
Compare pandas and polars to process billions of rows on commodity hardware, revealing polars' faster columnar processing and easier API for data manipulation and filtering.
Explore using Apache Iceberg with Polars in Python to load a local Iceberg catalog, scan a table, and execute lazy queries that read only required columns for efficient data analysis.
Connect to a local Iceberg catalog, load a table, convert it to a Polars lazy data frame, and filter by id, name, or multiple ids.
Explore how Apache Iceberg integrates with Spark across local catalogs and AWS S3 storage, coordinating metadata and data layers for production environments and petabyte-scale parquet datasets.
Install PySpark in a Jupyter Notebook to enable reading, writing, and managing Iceberg tables with the Python API.
Initialize a spark session with iceberg support, create a local catalog product table with six columns, insert 25 rows, and demonstrate iceberg features like schema evolution and time travel.
Query iceberg data with PySpark by reading the local catalog’s product table into a Spark DataFrame and selecting the name, then product ID, name, and stock.
Explore PySpark aggregate functions on Iceberg tables, set up a Spark session with Iceberg integration, and compute total, max, min prices, counts, and distinct categories.
Explore duckdb, an open source in-memory analytical database designed for workloads, embeddable with zero configuration, SQL support, columnar storage, and vectorized execution.
Explore DuckDB's in-memory execution and columnar storage for ultra-fast analytical queries. Learn its serverless, embedded design, multi-language support, native file access, and cross-platform open-source nature for streamlined data workflows.
Implement a production-ready iceberg workflow using AWS Glue as the catalog, S3 storage, and Spark processing. Create a Glue database, define a product schema, and build an iceberg table.
Learn to read iceberg tables in S3 with DuckDB, using the iceberg and httpfs extensions and the iceberg_scan function for an S3 catalog.
Learn how to insert data into iceberg tables with spark using dataframe write, append, and coalesce, while examining metadata, snapshots, and copy-on-write behavior for time travel.
Explore time travel with Apache Iceberg by querying historical snapshots via version as of, using snapshot metadata for auditing, debugging, and data analysis in spark read-only queries.
Configure and verify Apache Iceberg table properties to optimize storage and query performance, including parquet storage, snappy compression, and aligning session and table level settings.
Iceberg enables hidden partitioning that decouples storage from queries, letting users filter with natural expressions while engineers manage partition transforms—time based like year, month, day—and partition evolution without rewriting data.
Learn how hidden partitioning in Apache Iceberg boosts performance without changing queries. See Spark integration, automatic partition pruning by day, and transforms like day, month, and hour.
Command for Installtion:
docker run -d -p 19120:19120 \
-e nessie.catalog.default-warehouse=warehouse \
-e nessie.catalog.warehouses.warehouse.location=s3://iceberg-local/nessiecatalog \
-e nessie.catalog.service.s3.default-options.auth-type=application-global \
-e AWS_ACCESS_KEY_ID="XXXX" \
-e AWS_SECRET_ACCESS_KEY="XXXXXXX" \
-e AWS_REGION=eu-north-1 \
-e AWS_FORCE_PATH_STYLE=true \
ghcr.io/projectnessie/nessie
Create databases and tables with Nessie catalog, insert data, and track operations with commits in Nessie UI and AWS S3.
Merge dev changes into main with Nessie, verify the merge, and clean up by deleting unused branches, mastering the full data lake development lifecycle.
Welcome to Data Lakehouse Engineering with Apache Iceberg : From Basics to Best Practices – your complete guide to mastering the next generation of open table formats for analytics at scale.
As the data world moves beyond traditional data lakes and expensive warehouses, Apache Iceberg is rapidly becoming the cornerstone of modern data architecture. Built for petabyte-scale datasets, Iceberg brings ACID transactions, schema evolution, time travel, partition pruning, and compatibility across multiple engines — all in an open, vendor-agnostic format.
In this hands-on course, you'll go far beyond the basics. You'll build real-world data lakehouse pipelines using powerful tools like:
PyIceberg – programmatic access to Iceberg tables in Python
Polars – lightning-fast DataFrame library for in-memory transformations
DuckDB – local SQL powerhouse for interactive development
Apache Spark – for large-scale batch and streaming processing
AWS S3 – cloud-native object storage for Iceberg tables
And many more: SQL, Parquet, Glue, Athena, and modern open-source utilities
What Makes This Course Special?
Hands-on & Tool-rich: Not just Spark! Learn to use Iceberg with modern engines like Polars, DuckDB, Databricks, Snowflake.
Cloud-Ready Architecture: Learn how to store and manage your Iceberg tables on AWS S3, enabling scalable and cost-effective deployments.
Concepts + Practical Projects: Understand table formats, catalog management, schema evolution, and then apply them using real datasets.
Open-source Focused: No vendor lock-in. You’ll build interoperable pipelines using open, community-driven tools.
What You’ll Learn:
The why and how of Apache Iceberg and its role in the data lakehouse ecosystem
Designing Iceberg tables with schema evolution, partitioning, and metadata management
How to query and manipulate Iceberg tables using Python (PyIceberg), SQL, and Spark
Real-world integration with DuckDB, and Polars
Using S3 object storage for cloud-native Iceberg tables
Performing time travel, incremental reads, and snapshot-based rollbacks
Optimizing performance with file compaction, statistics, and clustering
Building reproducible, scalable, and maintainable data pipelines
Who Is This Course For?
Data Engineers and Architects building modern lakehouse systems
Python Developers working with large-scale datasets and analytics
Cloud Professionals using AWS S3 for data lakes
Analysts or Engineers moving from Hive, Delta Lake, or traditional warehouses
Anyone passionate about data engineering, analytics, and open-source innovation
Tools & Technologies You’ll Use:
Apache Iceberg, PyIceberg, Spark,
DuckDB, Polars, Pandas, SQL, AWS S3, Parquet
Integration with Metastore/Catalogs (REST, Glue)
Hands-on with Jupyter Notebooks, CLI
By the end of this course, you'll be able to design, deploy, and scale data lakehouse solutions using Apache Iceberg and a rich ecosystem of open-source tools — confidently and efficiently.