Data Sink定义、参数与可落地示例

1. Definition

Data Sink 用于应用上游的 Schema 变更 并将变更数据 写入外部系统。

一个 Sink 可以同时写入多张表 (通常配合 route/transform 完成多表/改名/合并等策略)。

2. Parameters

描述一个 Data Sink 至少包含以下要素:

参数 含义 必/选
type Sink 类型,例如 dorisstarrocks 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 决定,例如:

    yaml 复制代码
    route:
      - 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. 实战要点 & 易错点

  1. 连接与权限

    • fenodes 支持多个 FE,建议逗号分隔以提升可用性。
    • 账号需具备目标库表的建表/写入权限(若使用自动建表/自动变更)。
  2. Schema 变更

    • Pipeline 级的 schema.change.behavior(如 lenient/try_evolve)决定遇到 DDL 的处理方式;
    • Sink 侧会应用 Schema 变更(如新列),但目标表模型需兼容(主键/明细模型、默认值策略等)。
  3. 多表写入

    • 通过 route 才能把不同源表 准确落到不同目标表
    • 若要将分片表合并 到同一目标表,也用 route 的正则匹配实现。
  4. 建表属性前缀

    • 使用 table.create.properties.* 作为默认建表参数前缀;
    • 常见如 replication_numbucket_numstorage_formatenable_unique_key_merge_on_write 等。
  5. 吞吐与稳定性

    • 合理设置批次、并行度与重试(不同版本参数名可能不同);
    • 观察导入延迟、错误率,并配合下游(Doris/StarRocks)导入可观测性指标。

6. 与 Data Pipeline 其余段落的协作方式(速记)

  • source:决定"读什么、从哪读"(支持多表正则);
  • transform:决定"列级变换/过滤/UDF";
  • route:决定"写到哪个目标表/是否合并分片表/是否改名";
  • sink (本文主角):决定"如何连接目标系统并落地数据 ,以及默认建表属性/写入参数";
  • pipeline:全局并行度、运行模式与 schema 演进策略等。
相关推荐
黄焖鸡能干四碗15 小时前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
天赐学c语言16 小时前
Linux - 应用层自定义协议与序列/反序列化
linux·服务器·网络·c++
hzhsec16 小时前
MSF-CobaltStrike实现内网socks代理转发上线
服务器·网络·安全·网络安全
Dxy123931021616 小时前
CSS常用样式详解:从基础到进阶的全面指南
前端·css
脆皮的饭桶16 小时前
结合使用,实现IPVS的高可用性、利用VRRP Script 实现全能高可用
运维·服务器·网络
IT_陈寒16 小时前
SpringBoot自动配置揭秘:5个让开发效率翻倍的隐藏技巧
前端·人工智能·后端
Moment16 小时前
前端工程化 + AI 赋能,从需求到运维一条龙怎么搭 ❓❓❓
前端·javascript·面试
没有bug.的程序员16 小时前
Serverless 弹性扩容引发的全线熔断:Spring Boot 启动耗时从 1s 压缩至 0.3s 的物理级绞杀
java·spring boot·kubernetes·serverless·扩容·线上
bearpping16 小时前
java进阶知识点
java·开发语言
Joker Zxc16 小时前
【前端基础(Javascript部分)】6、用JavaScript的递归函数和for循环,计算斐波那契数列的第 n 项值
开发语言·前端·javascript