How We Simplified Our Data Ingestion & Transformation Process
Mar 3, 2019Yichao Wang

Summary
This post details the evolution of Grab's real-time data ingestion and transformation process. Initially, a system using Kafka for collection, Spark Streaming and a Golang service for transformation, and TalariaDB for storage was built. Challenges arose with operational complexity, Spark Streaming scaling issues, data loss due to S3 eventual consistency, and processing lag. The team simplified the architecture by re-implementing the transformation logic in Golang, addressing event partitioning, ORC encoding, and improving memory utilization. This resulted in a reduced processing lag to approximately 1 minute, fixed data loss issues, and decreased operational workload by removing Spark Streaming.
More from the Data Production Issue (DPI) Operationalization trail
- Data Mesh at Grab (Part III): Operationalizing data reliability with automated DPIs
- The Hugo evolution: Engineering Grab's unified, one-click data ingestion platform with Apache Flink
- Data Mesh at Grab (Part II): The foundational tools behind certification
- Real-time data quality monitoring: Kafka stream contracts with syntactic and semantic test
- Data mesh at Grab part I: Building trust through certification