🏢 公司C档 · NaN分

数据啥时候算到齐?Pinterest给了答案

··约1分钟阅读

📋 总体概括

Pinterest公开了基于事件时间水位线的分区定稿机制:用Flink追踪事件时间,把非回退水位线写进Iceberg元数据,让下游作业不再靠猜判断CDC数据是否完整。同期DuckDB 2.0密集更新,数据平台竞争正从管道堆砌转向确定性工程。

📄 正文

流式CDC数据永远在'下一批'的路上,下游作业却必须决定:现在开工,还是再等等?2026年10月,Pinterest通过InfoQ(作者Leela Kumili)公开了它的解法——基于事件时间的分区定稿机制,用Apache Flink追踪事件时间,用Apache Iceberg元数据发布一条非回退水位线。同一个十月,DuckDB生态的更新清单也排得满满当当。两件事看似不相关,指向的却是同一个趋势:数据平台的竞赛,正在从'管道堆得快'转向'确定性给得出'。

🔍 CDC数据,没有最后一行

流数据世界里,没有最后一行。

做过数仓的人都有体感:凌晨的批处理窗口,最怕的不是算错,而是算早了。上游某张表晚到了十分钟,整条链路的下游全部返工——补数、对账、挨个向业务方解释为什么昨天的大盘数字今天变了。于是一个朴素的问题反复被问:这批数据,到底到齐了没有?

在批处理时代,这靠约定和经验解决:T+1、凌晨两点封板、SLA兜底。但在Pinterest这类体量的平台,数据库摄入框架面对的是持续不断的CDC(变更数据捕获)流,分区是'活'的,数据随时在追加。批处理世界的'封板'假设被彻底打破了。

2026年10月,Pinterest在其数据库摄入框架中引入了基于事件时间的分区定稿机制(event time-based partition finalization),要解决的正是这个痛点:帮助下游作业判断,持续摄入的CDC数据何时'足够完整'(sufficiently complete),可以放心处理。

分区完成度之痛
痛点 1
流式CDC数据持续到达,不知何时算完整
→
解法
事件时间水位线给出单调推进的完成度信号
痛点 2
定时调度靠拍延迟,早了丢数、晚了浪费算力
→
解法
分区元数据定稿,下游按信号触发
痛点 3
多个引擎各自判断,口径不一
→
解法
把水位线写入Iceberg元数据,全引擎共用一份真相

产业逻辑很清楚:'数据到齐'不该是一个玄学,而应该是一个可以被机器读取的信号。 谁先把这个信号标准化,谁就能把生产级负载从'运维经验'手里接过来。

🌊 水位线不是新概念,写进湖仓元数据才是

水位线在流计算里不是新东西,把它变成湖仓公共契约,才是这次的关键一步。

按InfoQ的报道,这套机制的两根支柱分工明确:Apache Flink负责追踪事件时间(event time)——也就是数据在业务侧真实发生的时间,而不是它到达系统的时间;Apache Iceberg的元数据则负责发布一条非回退水位线(non-regressing watermark)。

'非回退'三个字是工程上的精髓。水位线只能前进、不能倒退,这保证了下游拿到的完成度判断是单调的:一旦某条水位线发布,之前的事件就视为已经到齐,不存在'昨晚说齐了今天又补一条'的反复。对下游作业来说,这是一个可以放心签字的承诺。

整条链路可以这样看:

把水位线放进Iceberg元数据层,妙处在于所有引擎共享同一份真相。无论是Flink、Spark还是Trino,只要读这张Iceberg表,就能拿到一致的完成度口径,不需要各自再搭一套监控和对账逻辑。在数据工程师的圈子里,这类'一份元数据、多个引擎对齐'的设计,正在被视为湖仓走向成熟期的标志性能力。

回看这条技术脉络,其实是两股潮流的汇合:

  • 流处理成熟期:事件时间与水位线概念在Flink等引擎内部打磨多年,成为流计算标配;
  • 开放表格式崛起:Iceberg等格式让元数据脱离单一引擎,成为湖仓的公共层;
  • CDC大规模上湖:持续摄入成为主流后,'分区何时定稿'从运维手艺升级为工程问题;
  • 2026年10月:Pinterest公开事件时间分区定稿机制,流式语义与湖仓元数据正式握手。

🦆 同一个十月,读端在另一头收网

写端在管确定性,读端在把门槛打到底。

几乎同一时间发布的《DuckDB生态通讯(2026年10月刊)》列出了密集的动态清单:DuckDB 2.0采用PEG解析器、支持异步S3读取;Jev在DuckDB和MotherDuck SQL里直接输入AI答案进行操作;DuckLake的维护工作推进;OpenStreetMap推出分析就绪版本;OneLake可以在浏览器中访问;原生Mac应用面世;社区聚光灯打给了Mark Litwintschik。

动态看点背后的信号
DuckDB 2.0 PEG解析器语言层地基重写引擎在打'内核级'的基础仗
异步S3读取对象存储读不再阻塞单机分析引擎正式打通湖上数据
DuckLake维护湖仓元数据格式持续演进DuckDB系也在做自己的元数据层
Jev在SQL里输入AI答案AI输出直接进分析流程AI for Data从噱头走向交互细节
OneLake浏览器访问、原生Mac应用入口全面轻量化分析工具的使用门槛继续下探

把两端放在一起看,画面就完整了:Pinterest们在上游把'数据可信'做成机器可读的信号,DuckDB们在下游把'数据分析'的启动成本压到几乎为零。 中间那些只负责搬运、既不保证确定性也不降低门槛的同步管道,正在被两头夹击。

⚖️ 从管道竞赛,到确定性竞赛

数据平台的价值,正在从'搬得快'变成'敢签字'。

过去十年,数据基础设施的叙事是吞吐和延迟:管道更快、数据更大、实时性更高。但当摄入能力普遍过剩之后,真正稀缺的变成了另一种东西——对数据状态的确定判断。这个分区完整吗?这条水位线还能推进吗?这两个引擎看到的是同一份数据吗?

按技术门槛和确定性两个维度,把当前的完成度方案摆一下,格局就很直观:

Pinterest把这套机制公开出来,本身就说明'分区完成度'是一个共性痛点——大到需要工程化、甚至标准化地解决。业内不少人判断,水位线正在从引擎内部实现,变成湖仓元数据层上的公共接口。接口一旦公共化,生态位就会重排:元数据格式(Iceberg、DuckLake这类)的重要性继续上升,而裸搬运管道的议价能力持续下降。

对使用者的启示同样具体:如果你的平台还在靠'多等两小时'来保证数据完整,那么值得认真评估事件时间水位线这类机制——它省下的不只是等待时间,更是下游一次次返工的隐性成本。确定性,才是数据平台上量之后最贵的东西。

小结:数据啥时候算'到齐',过去靠SLA和老师傅的直觉,现在开始有了一条可以机器读取的非回退水位线。Pinterest的事件时间分区定稿,与DuckDB生态在读端的大步推进,共同勾勒出下一阶段的竞争主线——写端拼确定性,读端拼低门槛,湖仓元数据成为两端共同的'内核'。接下来值得盯的问题只有一个:水位线这个接口,会不会成为开放表格式标准的一部分。谁先把'敢签字'做成产品能力,谁就接住了下一个周期。

本文由本站 AI 辅助聚合生成,原始来源如下:

🔎 本文基于以下资讯(素材溯源 · 信息来源)

📰 相关阅读推荐(与本文相关的其他资讯)