Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Duration 21 hours
Course Outline
Module 1: Big Data & Spark Foundations
- Overview of the Big Data ecosystem and Spark's role in contemporary data platforms
- Exploring Spark architecture: drivers, executors, cluster managers, lazy evaluation, DAGs, and execution planning
- Distinguishing between RDD and DataFrame APIs and determining when to apply each method
- Creating and configuring SparkSession while understanding the fundamentals of application configuration
Module 2: PySpark DataFrames
- Reading and writing data from enterprise sources and formats: CSV, JSON, Parquet, and Delta
- Working with PySpark DataFrames: transformations, actions, column expressions, filtering, joins, and aggregations
- Implementing advanced operations such as window functions, timestamp handling, and nested data manipulation
- Applying data quality checks and writing reusable, maintainable PySpark code
Module 3: Kubernetes & Docker Fundamentals for Spark Users
- Understanding the relationship between Docker images and Kubernetes pods in relation to Spark driver and executor processes — a conceptual view for cluster consumers rather than administrators
- Understanding the mechanics of a Spark job running on Kubernetes: pod scheduling, resource requests and limits, and the mapping of session settings to these resources
- Understanding the distinction between controls available via Spark session parameters and those managed by the platform team through cluster provisioning — and why this boundary is critical for tuning
- Hands-on exercise: Inspect a live Spark-on-Kubernetes job in the sandbox cluster to identify driver and executor pods
Module 4: Spark Session Configuration on Kubernetes — Deep Dive
- Understanding the trade-offs between executor count and executor size: memory versus cores and how to reason about them
- Driver and executor memory allocation, memory overhead, and how these factors translate into pod resources
- Dynamic allocation: its behaviour on Kubernetes, when it conserves resources, and when it may not
- Hands-on exercise: Execute the same job under varying executor and core configurations to compare runtime and resource usage
Module 5: Scaling Behaviour & Cost Optimisation
- Understanding how adding or removing nodes alters job behaviour, completion time, and resource consumption
- Comparing the performance and cost trade-offs between many small executors and fewer large ones
- Shuffle behaviour and shuffle partition tuning, including estimating the cost impact of configuration choices
- Hands-on exercise: Scale the sandbox cluster from five to ten nodes and observe the impact on job completion time and resource consumption
Module 6: Efficient Data Ingestion & Partitioning
- Understanding the small-files problem: why sources split across many 1–5 MB Parquet files degrade performance and disrupt partitioning
- Repartitioning and coalescing strategies
- Controlling partition sizes during both read and write operations
- Writing Parquet efficiently to prevent the recurrence of the small-files problem downstream
- Hands-on exercise: Load a dataset composed of numerous small Parquet partitions, apply different repartitioning strategies, and compare performance before and after optimisation
Module 7: Pandas Memory Management & Failure Diagnosis
- Understanding the root causes of out-of-memory errors in Pandas and recognising the associated symptoms
- Applying memory-efficient conversion patterns between Spark and Pandas
- Avoiding memory spikes when writing large datasets to CSV
- Utilising chunked processing and dtype optimisation for constrained environments
- Hands-on exercise: Reproduce a typical Pandas out-of-memory scenario and resolve it using chunking and dtype optimisation
Module 8: Polars as a Complementary Tool
- Positioning Polars relative to Pandas: performance characteristics, lazy evaluation, and memory behaviour
- Understanding where Polars fits alongside PySpark and Pandas in modern cloud data stacks and migration roadmaps, including AWS environments
- Hands-on exercise: Rewrite a Pandas-heavy transformation in Polars and compare memory usage and processing speed
Module 9: Applying Optimisation to ETL & ML Workloads
- Applying configuration, partitioning, and memory-management principles across a realistic ETL pipeline
- Understanding optimisation considerations specific to machine-learning workloads running on the same cluster
- Applying a practical tuning workflow to systematically diagnose cost and performance issues
- Hands-on exercise: Complete an end-to-end mini-project combining data loading, transformation, and a simple model-training step, with participants tuning the Spark configuration themselves
Requirements
Participants are expected to possess:
- Hands-on experience with Python programming, covering functions, modules, and foundational object-oriented concepts.
- Basic to intermediate proficiency in handling Pandas and tabular data-processing workflows.
- Foundational knowledge of PySpark and Spark DataFrames, including data ingestion, transformations, actions, joins, and aggregations.
- A general grasp of SQL and data-processing concepts, such as filtering, grouping, and joining datasets.
- Basic familiarity with Docker and Kubernetes concepts, including containers, images, and pods. No prior Kubernetes administration experience is necessary.
- Basic understanding of standard data formats like CSV, JSON, and Parquet.
Participants are not required to be Kubernetes administrators or infrastructure specialists. The course is tailored to help data engineers, developers, and data scientists understand and optimise their Spark workloads on Kubernetes from an application and configuration standpoint.
Target Audience
This course is ideal for professionals who develop, maintain, or optimise data-processing and machine-learning workloads using Python and Spark in cloud or containerised settings.
It is particularly well-suited for:
- Data Engineers engaged in PySpark, distributed data processing, and ETL pipeline development.
- Data Scientists processing large datasets or executing machine-learning workloads with Spark, Pandas, or Polars.
- Python Developers working on data-intensive applications aiming to enhance memory efficiency and processing speed.
- Machine Learning Engineers managing data preparation and model-training tasks on shared Kubernetes or cloud platforms.
- Analytics Engineers handling large datasets and seeking to boost data-processing efficiency.
- DevOps, Platform, and Cloud Engineers supporting Spark workloads on Kubernetes who need to comprehend how application-level settings influence resource usage and performance.
- Technical Leads and Solution Architects involved in designing or optimising modern data-processing platforms.
Testimonials (1)
I liked that it was practical. Loved to apply the theoretical knowledge with practical examples.