Role Purpose
We are looking for a hands-on Senior Data Engineer with strong expertise in Python, PySpark and Apache Spark to develop, troubleshoot and optimise production-grade distributed data-processing workloads.
This is a
Spark engineering role, not a general data engineering or orchestration role. The successful candidate must be able to write efficient PySpark code, understand Spark execution behaviour, diagnose complex performance bottlenecks and independently own engineering problems through implementation, testing and production delivery.
Key Accountabilities
- PySpark Development and Distributed Processing
- Design, develop, test and maintain production-grade PySpark applications using DataFrame APIs and Spark SQL.
- Implement complex transformations, joins, aggregations, window functions, deduplication and incremental processing.
- Translate data requirements into efficient, scalable solutions, considering data characteristics, edge cases and execution costs.
- Spark Internals, Optimisation and Troubleshooting
- Apply a strong understanding of Spark execution, including lazy evaluation, driver/executor roles, DAGs, jobs, stages, tasks, partitions and shuffle boundaries.
- Diagnose performance bottlenecks using Spark UI, Spark History Server, execution plans and application logs.
- Identify and resolve data skew, excessive shuffling, spills, inefficient joins, poorly sized partitions, long-running tasks and resource utilisation issues.
- Apply AQE, appropriate join strategies, partitioning, repartitioning, coalescing, partition pruning and predicate pushdown to improve performance.
- Investigate production issues, establish root causes and validate fixes using measurable outcomes.
- Production Engineering and Reliability
- Build and maintain reliable batch and incremental processing pipelines with appropriate error handling, logging, data validation and reconciliation.
- Troubleshoot job failures and performance regressions; contribute to testing, code reviews, documentation and reusable engineering practices.
- Monitor workload performance and improve runtime, resource efficiency and operational stability.
- Technical Ownership and Collaboration
- Own assigned engineering problems from analysis through implementation, testing and deployment.
- Evaluate alternative solutions, explain technical trade-offs and collaborate with engineers, architects and other stakeholders.
Skills and Experience
Must Have
Experience: 5–7 years of relevant software or data engineering experience, including substantial hands-on development.
Python and PySpark: Strong programming skills and practical experience developing, debugging and optimising production-grade PySpark applications. Spark development must be a core engineering skill, not merely exposure through prebuilt pipelines or orchestration tools.
Apache Spark: Strong understanding of distributed processing, execution internals, shuffle behaviour, partitioning and parallelism.
Performance Optimisation: Practical understanding of data skew and mitigation, AQE, broadcast hash and sort-merge joins, shuffle optimisation, and diagnosing bottlenecks using Spark UI, History Server or execution plans.
PySpark Coding: Ability to independently solve data-processing problems involving joins, aggregations, window functions and deduplication using DataFrame APIs and Spark SQL.
Python Fundamentals: Strong command of data structures, functions, exception handling, debugging and maintainable code.
SQL: Strong SQL skills, including joins, aggregations, window functions and query optimisation fundamentals.
Good to Have
Spark Structured Streaming and incremental or event-driven processing.
Kafka or similar streaming platforms.
Delta Lake, Apache Iceberg or other lakehouse technologies.
Experience with Spark environments such as Databricks or Amazon EMR.
Job description provided by Prevalent AI.
View the original posting