fin1te

I build data platforms and cloud infrastructure, then make them smaller.

I'm Rishabh Mehta, a cloud and data engineer at Jio Platforms in Mumbai. In the last three years I built a Rust framework that replaced Spark across 17 application groups, moved 400+ Spark jobs to Structured Streaming, and scaled ClickHouse past two trillion rows. Now I'm building the cloud and network foundations of India's largest AI datacenter.

Rishabh Mehta
Role
Cloud & Data Engineer (SDE)
Team
Jio Cloud
Focus
Rust, Spark, ClickHouse, Kubernetes, AI infra
Recognition
Star Performer, Jio Cloud Townhall
Before
Google DSC Lead, B.E. 9.3 CGPA
Based
Mumbai · UTC+5:30

8.7 TB→<200 GB

Executor RAM across 17 application groups after moving them from Spark to Rust

3,500→~200

CPU cores for the same log-parsing workload

200+ PB

IPDR data on ClickHouse, on roughly a tenth of the servers first planned

<20 ms

Subscriber lookups on ClickHouse tables past 2 trillion rows

The rewrite

Same traffic, 48 times fewer cores.

The log parser for MyJio ran as a Spark 2 job calling Perl, sized at 120 executors to keep up. The Rust version reads the same Kafka topic, matches the old output field for field, and fits in one pod. Toggle between them.

Figure 1

Spark to Rust, measured

Kafka110 partitions

120 executors × 4 cores on ~12 nodes1 cell = 1 core

Sinkbatch every 10 s
CPU cores
480
Memory
480 GB
Footprint
12 nodes
Batch latency
10 s
MyJio real-time log parser, 10 million records replayed from the production topic, March 2026. Output matched the legacy parser field for field on 20,000 live records before any of this was measured.

Systems

Bare-metal onboarding through the DPU

In a bare-metal GPU cloud the tenant owns the host. So the platform lives on the DPU instead: provisioned out-of-band over Redfish, then joined to Kubernetes as an ARM64 worker, with no agent on the host at all.

Fig. 04Bare-metal onboarding through the DPU7 components · 7 links
Management clusterBare-metal serverRedfishflashjoinPCIeKubernetes APIcontrol planeDPF operatorDOCA Platform FrameworkBFB imageDPU OS bundleBMCRedfish, OOBBlueField-3 DPUARM cores, own OSkubeletARM64 workerHost CPUs and GPUstenant-owned, untouched by the platform

Five more systems, all interactive →

Writing

Notes from production.

  1. Moving 400+ Spark jobs from DStreams to Structured StreamingA naive port made our hardest job twice as slow and quietly lost data. Here is what it took to reach parity and then pull ahead: bounded batches, fewer scheduling waves, a watermark guard, two timezone bugs and one very deep query plan.SparkStructured StreamingKafkaScala
    6 min
  2. Building the Spark UI that Structured Streaming should have hadThe stock Spark UI forgets a streaming query the moment it stops, and it cannot tell you how far behind Kafka you are. So I built a Streaming Stats tab into our framework: a SparkPlugin, a query listener, a ring buffer and server-rendered SVG.SparkStructured StreamingKafkaObservability
    5 min
  3. Replacing a 480-core Spark job with 10 cores of RustHow the MyJio log parser went from 120 Spark executors to a single pod, what parity testing looked like, and the thread-count bug that almost made it look worse than it was.RustKafkaSparkPerformance
    5 min

All writing →