Native query engine
2025 to now · AWSTechnical lead for the performance and stability of a native data analytics accelerator, co-leading the GA performance effort. More once it is public.
Staff Software Engineer, Data Analytics · San Francisco Bay Area
I enjoy building runtimes for large-scale data analytics engines! Today I am the tech lead of the Upper Engine team at Amazon EMR, where I focus on the performance and stability of our native query engine: vectorized execution, adaptive runtime filtering, and query optimization.
Earlier I was part of the core team that launched a managed, serverless stream processing service at Confluent, and improved the query runtimes behind the cloud data warehouse at Cloudera. Before that, a PhD at Imperial College London on resource management for shared compute clusters, supervised by Peter Pietzuch, with two summers at Microsoft's research lab in Silicon Valley. I am a PMC member on Apache ORC and a committer on Apache Hive.
Technical lead for the performance and stability of a native data analytics accelerator, co-leading the GA performance effort. More once it is public.
Designed, implemented and delivered exception classification, the single biggest usability improvement and adoption enabler for the Flink GA. It surfaces actionable, user-facing errors across more than 1M jobs per week, holding unclassified exceptions below 0.1%. Core contributor for Flink Java user defined functions and lead for Python UDFs. Delivered a new user code registry (Artifact Service) that validates and runs customer code across clouds and regions, plus a Validation API reused by three other products. Introduced feature-flagged SHIM versioning that cut UDF hotfix turnaround from weeks to minutes.
Designed, implemented and delivered several enhancements to Cloudera's scalable query processing engine, such as lazy decoding (row-level filtering) and data-induced query predicates, improving query latency by up to 50%. Lazy decoding is an open source feature that cuts query runtime for production workloads by saving memory allocations and CPU cycles across long-running executors on large-scale clusters.