Grab Engineering - The Hugo evolution - Engineering Grab's unified, one-click data ingestion platform with Apache Flink

Here is my notes about the blog https://engineering.grab.com/one-click-data-ingestion-platform-with-apache-flink

1. Overview

  • In legacy system, we have multiple services for data ingestion pipeline from datasource (MySQL, Postgres) -> Object Storage (S3).

  • Introduce Flink CDC to save time for the process.

2. High-level Architecture

2.1. MySQL CDC -> S3

https://engineering.grab.com/img/flink-in-hugo/figure-2.png

2.2. Kafka Connect -> S3

https://engineering.grab.com/img/flink-in-hugo/figure-3.png

3. Dashboard

  • Move onboarding data pipeline from days to minutes. Although we still have drop rates in onboarding process.

https://engineering.grab.com/img/flink-in-hugo/table.png

3.1. Drop rate Kafka Sink

https://engineering.grab.com/img/flink-in-hugo/figure-4.png

3.2. Drop rate CDC Sink

https://engineering.grab.com/img/flink-in-hugo/figure-5.png

4. Different from Service Mesh and Kafka

  • Service mesh: synchronize grpc call -> pull, push.

  • Kafka: asynchronize call

5. Different about arvo file and parquet files

Compress file with JSON, CSV -> save cost for big data storage in S3.

Feature JSON CSV Avro Parquet
Storage Layout Text, hierarchical Text, row-based Binary, row-based Binary, column-based

🔑 Core Difference

Avro = Row-based format Parquet = Column-based format

Avro

  • Kafka (very common)
  • Schema Registry (Confluent)
  • Streaming systems

Parquet

  • Spark, Flink, Presto, Trino
  • Data lakes (Iceberg, Delta Lake, Hudi)

Mental Model

Avro = “Write fast, read full records” Parquet = “Read fast, scan columns

6. What is tool ?

  • Spark: big data computing.

  • Trino: Trino is a distributed SQL query engine designed to query data where it already lives, without moving it into a separate database.

              SQL Query
                  │
                  ▼
           +--------------+
           |    Trino     |
           | Query Engine |
           +--------------+
            /      |      \
           /       |       \
          ▼        ▼        ▼
    Parquet     MySQL     Iceberg
    (S3)      PostgreSQL  ksqlDB (allow to query in Kafka)
    
  • Iceberg: storage big data with manifest

  • Flink: straming flatform.

  • Kafka Connect: connect to kafka

  • Debezium CDC: capture change logs, allow to integration failure messages with Dead Letter Queue (DLQ) Kafka

  • ksqlDB: allow query in Kafka

6. Learning notes

  • Learning about integration: CDC Database and Kafka.

  • Learning about query engine: Hive, Trino.

  • Learning about distributed big data compute: Spark.

  • Learning about distributed storage: Iceberge.

July 13, 2026