找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2212

积分

0

好友

320

主题
发表于 2025-12-24 21:08:00 | 查看: 34| 回复: 0

在上一篇文章中,我们对Apache Doris的Partial Update功能进行了初步探索,并总结了一套与官方建议略有不同,但更贴合实际落地场景的建表方案。

《Doris 的 partial update,好使不啦?》

然而,之前的测试规模较小,属于功能验证性质,不足以支撑生产环境下的性能评估。为了真正检验Doris Partial Update在高负载场景下的稳定性,我们需要进行更大强度的压力测试。

本次测试将参考先前验证Paimon的方案,采用Flink 1.19作为数据处理引擎,Doris 2.1.11作为数据存储,模拟真实业务中高并发、无序的数据更新场景。

一、 测试方案设计

1.1 核心思路

为了充分验证Partial Update的“聚合”能力,我们模拟一个常见的数据流处理场景:将原始的宽表数据,通过预设的策略拆分为多条仅包含部分字段的“窄”数据记录。

这些“窄”数据记录将以无序的方式写入Kafka消息队列。随后,Flink作业将消费Kafka中的数据,并以最朴素的“普通写入”方式,将其灌入预先创建的Doris Partial Update表中。

最终,我们将验证Doris表是否能根据指定的Key字段,正确地将这些分散的更新“缝合”回完整的宽表记录。

1.2 数据集与拆分策略

本次测试沿用之前验证Paimon时使用的数据集,包含5个核心字段:domain, registrar, registrant_org, registrar_country, registrant_province。其中,domain字段被指定为关联所有数据的唯一键。

在写入Kafka前,原始数据将被拆分为以下四种组合:

  1. (domain, registrar)
  2. (domain, registrant_org)
  3. (domain, registrar_country)
  4. (domain, registrant_province)

拆分后的数据规模达数百万条,它们在Kafka中的形态如下图所示:
数据拆分后Kafka中的形态

1.3 目标Doris表设计

为了清晰记录每次数据更新,并最终根据domain字段聚合出完整数据,我们设计如下Doris聚合表(Aggregate Key)。update_cnt字段用于统计每条记录经历的数据合并次数。

CREATE TABLE doris_partial_update03 (
    domain varchar(500),
    registrar string REPLACE_IF_NOT_NULL,
    registrant_org string REPLACE_IF_NOT_NULL,
    registrar_country string REPLACE_IF_NOT_NULL,
    registrant_province string REPLACE_IF_NOT_NULL,
    update_cnt INT SUM DEFAULT 1
)
AGGREGATE KEY(domain)
DISTRIBUTED BY HASH(domain) BUCKETS 3

二、 Flink作业实现

在实现Flink实时数据处理作业时,一个令人惊喜的发现是:相比之前通过命令行手动写入时需要设置的特殊Session参数(如enable_unique_key_partial_update),通过Flink Connector写入时,这些限制完全无需考虑。

更关键的是,Flink作业从Kafka中读取的、字段不完整的“窄”数据,无需与Doris目标表的字段一一对齐或进行复杂转换,可以直接写入。这极大地简化了Flink作业的数据流架构设计

整个Flink Sink的配置核心是确保序列化格式与数据源匹配,下图中红框标出的format配置项前后需保持一致。
Flink Connector配置重点

至此,编码工作基本完成。相比实现相同功能的Paimon方案,本次使用Doris的方案在编码复杂度上显著降低,过程更为简洁。

三、 测试结果验证

  1. 写入性能:由于数据在短时间内被一次性全量灌入,难以精确统计每秒吞吐量(QPS)。但直观感受上,写入过程流畅,未出现明显瓶颈或堆积,性能表现符合预期。
  2. 数据正确性:查询最终表数据,验证通过。Doris成功根据domain字段将所有分散的更新聚合成完整的行数据,且update_cnt字段正确统计了合并次数(理论上每条记录应被更新4次),如下图所示:
    数据聚合结果验证

四、 总结

本次压力测试表明,通过Flink将海量、无序的增量数据写入Doris Partial Update表,其门槛比预想的更低。Flink Connector的智能处理省去了繁琐的数据对齐和转换操作,使得整个大数据处理工作流的实现异常简洁。

从功能和体验上看,Doris Partial Update在此场景下的表现,相比其他同类方案,在易用性和开发效率上具有一定优势,为处理实时更新与合并场景提供了一个高效、可靠的选择。




上一篇:AI浪潮下的程序员职业危机:应对岗位缩减与中年困局
下一篇:直播平台安全攻防:剖析黑灰产有组织攻击技术链路与防御策略
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-11 11:55 , Processed in 0.313794 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表