# Doris Sink 组件使用说明
# 组件说明
Doris Sink 将数据批量缓存后,通过 HTTP 协议向 Doris FE 发送 Stream Load 请求,由 FE 转发给 BE 执行导入。不是 JDBC 写入。
提示
点击对应表的【目标表参数】按钮展开的配置项,完成配置后必须点击弹窗底部的【保存配置】按钮才能保存各自表的配置参数。
# 配置项说明
| 配置名称 | 数据类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| 节点名称 | String | 是 | Doris | 当前创建的节点名称,由用户自定义且不可为空。命名可包含字母、数字、下划线。确保唯一性。 |
| 节点编码 | String | 是 | 自动生成 | 当前创建的节点编码,以此标识此组件,由用户自定义且不可为空。命名可包含字母、数字、下划线。确保唯一性。 |
| 选择数据源 | String | 是 | - | 从下拉选项中选择列出的当前项目已经关联的数据源。 |
| 选择库 | String | 是 | - | 从下拉列表中选择数据库。 |
| 表添加模式 | String | 否 | 表不存在时创建 | Doris Sink 可以根据上游 Schema 自动在 Doris 创建表。有四种建表策略: - 重新创建表:不存在则创建,存在则删表重建 - 表不存在时创建:不存在则创建,存在则跳过 - 表不存在时报告错误:表不存在直接报错 - 忽略对表的处理 |
| 选择表 | String | 是 | - | 从下拉列表中选择数据表。 |
| 数据添加模式 | String | 否 | 追加数据 | 数据已存在时的策略支持四种模式: - 追加数据:数据统一追加到目标表中; - 同步前删除数据:先清空目标表数据,然后再给目标表添加数据; - 当存在数据时,报告错误:当目标表存在相同数据时,报告错误,不会添加数据。 - 自定义处理:用户可以自定义写SQL的方式进行处理。 |
| 大小写转换模式 | String | 否 | 不转换 | 支持三种配置: - 不转换:目标表与来源表的表名、字段名大小写一致; - 转大写:将目标表的表名、字段名转换为大写; - 转小写:将目标表的表名、字段名转换为小写。 |
| 标签前缀 | String | 是 | - | StreamLoad提交时的唯一标识,如果不填写系统会自动生成一个UUID。 |
| 启用两阶段提交 | Boolean | 是 | false | 用于确保分布式事务的原子性。它被用来确保在分布式环境中,所有参与的节点要么都成功提交事务,要么都回滚,避免部分提交的情况发生。 |
| 是否启用删除 | Boolean | 是 | false | 删除所有与导入数据 key 列值相同的行。该选项需要 Doris 表开启批量删除功能 (默认开启 0.15+ 版本),且只支持 Unique 表模型。 |
| 启用不支持的类型转换 | Boolean | 是 | false | 启用不支持的类型转换。 |
| 批量提交缓冲区计数 | Integer | 是 | 3 | 批量提交缓冲区计数,单位:行。 |
| 批量提交最大缓存 | Integer | 是 | 262144 | 批量提交缓冲区计数,单位:byte。 |
| 最大重试次数 | Integer | 是 | 3 | 最大重试次数,单位:次。 |
| 提交记录数量 | Integer | 是 | 1 | 每次提交数据的数量,单位:行。 |
| 可选参数 | Map | 否 | - | 可以根据需求进行配置。可选参数名称可以参考 Seatunnel 官方手册。 json 格式如: { "doris.config": "{ "format" :"JSON", "read_json_by_line": true }" } |
表添加模式为“重新创建表”和“表不存在时创建”,【获取表】后,可以点击每张表后的【目标表参数】按钮分别为表配置更多的参数,具体如下:
| 配置名称 | 数据类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| 名称 | String | 是 | - | 表名称。 |
| 建表类型 | String | 是 | 明细表 | 三种类型:主键表、明细表、聚合表。 |
| 自定义模板 | Boolean | 否 | 否 | 是否启用自定义模板的开关。启用后可以自己定义模板内容。 |
| 选择分桶键字段 | List | 否 | - | 从下拉列表中选择表字段作为分桶键。 |
| 建表模板 | String | 否 | - | 内置默认建表模板。 |
# 性能调优
- 调大缓冲区
sink.buffer-size = 10485760(10MB)
doris.batch.size = 20000
- 2PC 模式下 buffer-size 失效
如果开启 sink.enable-2pc = true,sink.buffer-size 配置将不起作用,刷写完全由 checkpoint.interval 触发。
需合理设置 Checkpoint 间隔(如 30 秒~60 秒),避免延迟过大 。
- JSON 解析优化
read_json_by_line = true(每行一个 JSON,大幅降低解析开销)