1. Definition
Data Sink 用于应用上游的 Schema 变更 并将变更数据 写入外部系统。
一个 Sink 可以同时写入多张表 (通常配合 route/transform 完成多表/改名/合并等策略)。
2. Parameters
描述一个 Data Sink 至少包含以下要素:
| 参数 | 含义 | 必/选 |
|---|---|---|
type |
Sink 类型,例如 doris、starrocks |
required |
name |
Sink 名称,用户自定义(有默认值) | optional |
| configurations of Data Sink | 用于构建 Sink 的连接与表属性配置,如连接地址、认证、建表属性等 | optional |
提示:Sink 只负责"写去哪、怎么写",写什么/写成什么表名 通常由
route(或tableId约定)决定;字段筛选/列转化可用transform。
3. Example(Doris Sink)
3.1 最小可用(与你提供的示例一致,补了注释)
yaml
sink:
type: doris
name: doris-sink # 可选:便于在 UI/日志中辨识
fenodes: 127.0.0.1:8030 # Doris FE 的 HTTP 服务地址(可多节点逗号分隔)
username: root
password: ""
table.create.properties.replication_num: 1 # 可选:建表默认副本数
3.2 常用增强写法(按需添加)
yaml
sink:
type: doris
fenodes: "fe1:8030,fe2:8030" # 多 FE
username: sync_user
password: "******"
# ====== 建表级别的默认属性(不存在时可自动建表/按属性创建)======
table.create.properties.replication_num: 3
table.create.properties.bucket_num: 8
table.create.properties.enable_unique_key_merge_on_write: true
table.create.properties.storage_format: V2
# ====== 写入/导入相关的一些惯用项(不同版本参数名可能略有差异)======
# sink.properties.batch.size: 10485760 # 批次大小(示例)
# sink.properties.max-retries: 3 # 重试次数(示例)
说明:
table.create.properties.*前缀用于建表默认参数(当 Sink 负责建表或需要自动建表时非常有用)。具体可用属性名与默认值可能随 Doris/连接器版本变化,按你的版本文档取舍。
多表写入时,表名通常由
route决定,例如:
yamlroute: - source-table: app_db.orders sink-table: ods_db.ods_orders
4. StarRocks Sink(对照示例)
字段命名与 Doris 十分类似;你可以用同样思路配置 FE 地址与表属性:
yaml
sink:
type: starrocks
name: sr-sink
fenodes: "fe1:8030,fe2:8030"
username: root
password: ""
table.create.properties.replication_num: 3
实际生产请以所用版本的官方参数名为准(例如是否支持更多
table.create.properties.*或写入缓冲参数)。
5. 实战要点 & 易错点
-
连接与权限
fenodes支持多个 FE,建议逗号分隔以提升可用性。- 账号需具备目标库表的建表/写入权限(若使用自动建表/自动变更)。
-
Schema 变更
- Pipeline 级的
schema.change.behavior(如lenient/try_evolve)决定遇到 DDL 的处理方式; - Sink 侧会应用 Schema 变更(如新列),但目标表模型需兼容(主键/明细模型、默认值策略等)。
- Pipeline 级的
-
多表写入
- 通过
route才能把不同源表 准确落到不同目标表; - 若要将分片表合并 到同一目标表,也用
route的正则匹配实现。
- 通过
-
建表属性前缀
- 使用
table.create.properties.*作为默认建表参数前缀; - 常见如
replication_num、bucket_num、storage_format、enable_unique_key_merge_on_write等。
- 使用
-
吞吐与稳定性
- 合理设置批次、并行度与重试(不同版本参数名可能不同);
- 观察导入延迟、错误率,并配合下游(Doris/StarRocks)导入可观测性指标。
6. 与 Data Pipeline 其余段落的协作方式(速记)
source:决定"读什么、从哪读"(支持多表正则);transform:决定"列级变换/过滤/UDF";route:决定"写到哪个目标表/是否合并分片表/是否改名";sink(本文主角):决定"如何连接目标系统并落地数据 ,以及默认建表属性/写入参数";pipeline:全局并行度、运行模式与 schema 演进策略等。