AWS Amarathon 2025 回顾

构建流式 Iceberg 表以进行实时物流分析

回顾系列

场次笔记

现代物流面临的挑战:

  • 管理卡车、司机、路线、燃料、维护、货运和仓库等多个数据流。
  • 需要实时运营视图和长期分析。数据存储要求:
  • 提供最新的连接视图,以支持即时运营。
  • 使用 Apache Iceberg 进行长期分析。技术栈:
  • RisingWave:提供流处理能力的数据平台。
  • Lakekeeper:用于数据管理的开放式 REST catalog。
  • Kafka:流数据的事件骨干。
  • 对象存储(例如 MinIO):数据存储解决方案。目标:
  • 演示如何使用指定的开放式技术栈构建流式 Iceberg 表。
  • 为现代物流数据管理提供简单有效的解决方案。物流分析问题
  • 当今的物流平台会生成:
  • 卡车:车队清单和位置
  • 司机:名册和任务分配
  • 货运:始发地、目的地和重量
  • 仓库:容量和站点
  • 路线:预计到达时间(ETA)和距离
  • 燃料与维护:成本和可靠性信号
  • 挑战:
  • 运营团队需要涵盖所有这些数据流的最新连接视图。
  • 数据团队需要将同一份数据存入 Iceberg,以进行 BI、AI 和历史分析。我们将构建的内容(流式 Iceberg 模式)
  • Kafka 将七个物流主题送入 RisingWave。
  • 使用 SQL 表达多路流连接,并在 RisingWave 内持续进行物化。
  • 结果从 RisingWave 持久化为原生 Apache Iceberg 表,并存储在 MinIO 等兼容 S3 的对象存储中。
  • Spark、Trino 和 DuckDB 等引擎通过开放式 REST catalog 查询相同的 Iceberg 表。为何使用 RisingWave 构建流式 Iceberg 表?
  • [ 1 ] 批处理优先的工作流:
  • 周期性作业、过时的连接结果和繁重的数据流水线。
  • 需要使用单独的 ETL 工具写入 Iceberg。
  • [ 2 ] RisingWave + 流式 Iceberg 表:
  • 在 RisingWave MV 中持续更新连接和聚合结果。
  • 始终“近乎实时”的 Iceberg 快照。
  • 一条 RisingWave 数据流水线同时支持实时仪表盘和离线分析。
  • 目标:由 RisingWave 负责流数据流水线和 Iceberg 写入,让 Iceberg 的使用体验如同数据库。

高层架构

  • 我们的端到端技术栈:
  • Kafka — 7 个物流主题的事件骨干。
  • RisingWave(流数据库)— 使用 SQL 摄取、连接和聚合数据;管理物化视图。
  • RisingWave Iceberg Table Engine + Lakekeeper — Iceberg 表的开放式 REST catalog。
  • MinIO — 兼容 S3 的对象存储。
  • 模式:Kafka → RisingWave → MinIO 中的 Iceberg → 任何引擎均可通过 REST catalog 查询。RisingWave 中的物流数据流与多路流连接
  • RisingWave 中的七个物流数据流
  • 本示例使用七个 Kafka 主题,这些主题会成为 RisingWave 中的 source:
  • trucks — 车队清单、容量、当前位置。
  • driver — 司机详细信息和 assigned_truck_id。
  • shipments — 始发地、目的地、重量、卡车绑定关系。
  • warehouses — 仓库位置和容量。
  • route — route_id、truck_id、driver_id、ETD/ETA、distance_km。
  • fuel — 加油事件(时间、升数、加油站)。
  • maint — 维护历史和成本。
  • RisingWave 将每一个数据流都视为流式表,可直接使用简单的 PostgreSQL 风格 SQL 进行连接。模式 1:RisingWave 中的多路流连接
  • 在 RisingWave 中,我们将核心物流逻辑表达为一个多路流连接。
  • LEFT JOIN drivers → trucks,以保留未匹配的司机数据。
  • JOIN shipments,以附加工作负载和目的地。
  • JOIN warehouses,以加入容量和位置信息。
  • JOIN route,以获取 ETD/ETA 和距离。
  • JOIN fuel 和 maint,以获取成本和可靠性信号。
  • 这会生成 logistics_joined_mv — RisingWave 内针对每辆卡车/每位司机/每条路线持续更新的反规范化物流记录。

车队 KPI、原生 Iceberg 表与跨引擎读取

模式 2:RisingWave 中的车队 KPI 视图

  • 在连接后的 MV 之上,我们另外定义一个用于车队 KPI 的 RisingWave MV:
  • 每辆卡车的容量利用率(%)。
  • 每辆卡车的燃料总成本和维护成本。
  • 合计运营总成本。
  • 当前路线信息(ID、ETD、ETA、distance_km)。
  • 相关司机详细信息。RisingWave 中的 overview 会成为实时车队绩效表 — 供 Grafana 和运营仪表盘使用。模式 3:从 RisingWave 流式写入原生 Iceberg
  • 不使用自定义 writer 服务,而是:
  • [ 1 ] 将 logistics_joined_iceberg 定义为由 RisingWave 管理的原生 Iceberg 表。
  • [ 2 ] 其 schema 与 logistics_joined_mv 一致。
  • [ 3 ] RisingWave 中的一小段配置可控制将流式变更提交为 Iceberg 快照的频率。模式 4:通过 REST catalog 进行跨引擎读取
  • 使用由 RisingWave 创建并注册到 Lakekeeper REST catalog 的 Iceberg 表:
  • [ 1 ] Spark 将 lakekeeper 挂载为 catalog
  • [ 2 ] Trino / DuckDB / Dremio 可以使用各自的 Iceberg connector 读取同一张表。
  • [ 3 ] 所有引擎都能看到 RisingWave 持续更新的同一份 Iceberg 数据。
  • 无需副本,无需专有表格式 — 只有由 RisingWave 写入的标准 Iceberg。

从本地笔记本电脑到生产集群:部署选项

  • 部署选项:从笔记本电脑到集群
  • [ 1 ] 本地(用于学习和原型开发):
  • 使用 Docker 运行 RisingWave、Kafka、MinIO 和 Lakekeeper。
  • 非常适合在笔记本电脑上试验流连接和 Iceberg 表。
  • [ 2 ] 生产环境(用于实际工作负载):
  • 通过 Kubernetes + Helm 部署 RisingWave 和技术栈的其余部分。
  • 使用适合你的环境的存储类、资源限制和持久化配置。
  • 在 RisingWave 中使用相同的 SQL 和模式 — 只不过更加持久、可扩展且自动化程度更高。简化传统 Iceberg 技术栈
  • 传统 Iceberg 部署通常需要:
  • 单独的流处理引擎。
  • 独立运行的 Iceberg writer 作业。
  • 外部压缩和维护工作流。
  • 额外的衔接机制,以确保 catalog、writer 和存储保持一致。
  • 使用 RisingWave:
  • [ 1 ] 流数据库负责数据摄取、连接、物化视图和 Iceberg 写入。
  • [ 2 ] REST catalog + MinIO 让一切保持完全开放且可互操作。
  • 更少的活动组件、更低的运维负担。使用 RisingWave 的参考架构
  • 可以将系统视为以 RisingWave 为中心的三个层级:
  • [ 1 ] 数据流 → RisingWave 表。
  • Kafka 主题会成为 RisingWave 中的流式表。
  • [ 2 ] 表 → RisingWave 物化视图。
  • 流连接和聚合会成为实时 MV(logistics_joined_mv、truck_fleet_overview)。
  • [ 3 ] 视图 → 流式 Iceberg 表。
  • RisingWave 只需少量配置和一条 INSERT....SELECT,即可将 MV 转换为流式 Iceberg 表。
  • 一旦将 RisingWave 视为“流式 SQL + Iceberg 引擎”,就能在许多领域复用这一模型。物流以外的可复用模式
  • RisingWave + Iceberg 模式适用于:
  • 电子商务:订单、库存、定价、客户事件。
  • FinTech:交易、余额、风险信号。
  • 工业 IoT:机器、传感器、警报、维护。
  • 电信:会话、使用量、QoS 指标。
  • 只要有多个实时数据流,并且需要开放式长期存储,就可以用同样的方式使用 RisingWave MV 和 Iceberg 表。要点总结(RisingWave + Iceberg)
  • 结合 Kafka、RisingWave、REST catalog、MinIO 和 Iceberg 的参考架构。
  • 实用模式:多路流连接、KPI 视图,以及从 RisingWave 原生写入 Iceberg。
  • 无需自定义 writer、临时拼凑的压缩作业或严重的供应商锁定,即可获得实时物流分析。