# ClickHouse Sink组件使用说明
# 组件说明
支持 Batch / Streaming,将数据写入 ClickHouse 本地表 / 分布式表。
提示
1、使用 Clickhouse Sink 前需要提前创建好库表。
2、点击对应表的【目标表参数】按钮展开的配置项,完成配置后必须点击弹窗底部的【保存配置】按钮才能保存各自表的配置参数。
# 配置项说明
| 配置名称 | 数据类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| 节点名称 | String | 是 | ClickHouse | 当前创建的节点名称,由用户自定义且不可为空。命名可包含字母、数字、下划线。确保唯一性。 |
| 节点编码 | String | 是 | 自动生成 | 当前创建的节点编码,以此标识此组件,由用户自定义且不可为空。命名可包含字母、数字、下划线。确保唯一性。 |
| 选择数据源 | String | 是 | - | 从下拉选项中选择列出的当前项目已经关联的数据源。 |
| 选择库 | String | 否 | - | 从下拉列表中选择数据库。 |
| 选择表 | String | 是 | - | 点击【获取表】从上游获取表。 |
| 数据添加模式 | String | 否 | 追加数据 | 支持四种模式: 1、追加数据:数据统一追加到目标表中; 2、同步前删除数据:先清空目标表数据,然后再给目标表添加数据; 3、当存在数据时,报告错误:当目标表存在相同数据时,报告错误,不会添加数据。 4、自定义处理:用户可以自定义写SQL的方式进行处理。 |
| 提交记录数 | Int | 否 | 20000 | 每批次通过 ClickHouse Jdbc 写入的行数 |
| 可选参数 | Map | 否 | - | 可以根据需求进行配置。可选参数名称可以参考 Seatunnel 官方手册。 json 格式如: { "clickhouse.config": "{ "max_rows_to_read" :100, "read_overflow_mode": "throw" }" } |
获取表后,点击每张表后的【目标表参数】按钮可以分别为表配置更多的参数,具体如下:
| 配置名称 | 数据类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| 名称 | String | 是 | - | 表名称。 |
| 拆分模式 | Boolean | 否 | 否 | boolean 类型,启用(true),默认禁用(false)。此模式仅支持引擎为:“Distributed”的 ClickHouse 表并且 internal_replication 选项为 true。它将会在 seatunnel 中拆分引擎为“Distributed”的表数据,并直接在每个分片上执行写操作。分片权重定义为 ClickHouse 将被计算在内。 |
| 分片键 | String | 否 | - | 此选项仅在“拆分模式”为 true 时有效。启用拆分模式时,向哪个节点发送数据是个问题,默认是随机选择,但可以使用“分片键”参数指定分片算法的字段。 |
| 允许轻量级删除 | Boolean | 否 | 否 | 默认false。允许基于 MergeTree 表引擎的实验性轻量级删除。轻量级删除原理参见:https://blog.csdn.net/weixin_39992480/article/details/128462618 |
| 启用 upsert 语法支持 | Boolean | 否 | 否 | UPSERT 是 INSERT 与 UPDATE 的结合体,表示行存在时执行 UPDATE,不存在时执行 INSERT。执行需要表有 Unique Key 或 ReplacingMergeTree。 不启用时默认是INSERT。 |
| 主键 | String | 否 | - | 标记 ClickHouse 表的主键列,并根据主键对 ClickHouse 表执行INSERT/UPDATE/DELETE |
# 并行度配置建议
- 单节点 ClickHouse:parallelism = 2~4
- 3 节点 CK 集群:parallelism = 3~6
并行度太高会压垮 CK CPU。
# FAQ
- 写入慢
调大提交记录数(batch_size 20000~50000)
写本地表,不要写分布式表
提高并行度(parallelism)
- 丢数据 / 超时
加大重试次数(retry)
调小提交记录数(batch_size)
检查 CK 内存 / CPU / 磁盘
- 字段不匹配
SeaTunnel 会按字段名匹配,不是按顺序
确保字段名一致