Iceberg 单表写入节点配置
配置 Iceberg 节点
1. 在数据集成页面左侧目录栏单击实时同步。
2. 在实时同步页面上方选择单表同步新建(可选择表单和画布模式)并进入配置页面。
3. 单击左侧写入,单击选择 Iceberg 节点并配置节点信息。
4. 您可以参考下表进行参数信息配置。
参数 | 说明 |
数据去向 | 需要写入的 Iceberg 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
写入模式 | Iceberg 实时同步写入支持两种模式:
append:追加写入,主键冲突时报错。
upsert:更新写入,主键冲突时更新数据。 |
唯一键 | 选择一个字段作为写入表的主键。 |
高级设置 | 可根据业务需求配置参数。 |
5. 预览数据字段并与读取节点配置字段映射,单击保存。
整库同步至 Iceberg 配置详情
背景信息及特性支持
支持 MySQL、TDSQL-C MySQL、Kafka、oracle 内整个实例或库表数据实时同步至 Iceberg 中:
MySQL、TDSQL-C MySQL 支持 DDL 变更监控,MySQL 数据源支持实例、库、表级数据变更监控。
Kafka 支持拆分消息内容动态匹配目标 Iceberg 表。
Iceberg 目标端支持根据源端表、及字段变更自动创建库、自动创建表、自动创建字段。
条件与限制
使用 Iceberg 自动建表能力需设置表属性:
{"format-version", "2","write.upsert.enabled", "true","engine.hive.enabled", "true"}
暂不支持在中间增加列。
仅支持同步新增列操作,暂不支持同步删除列、列名变更、列类型变更、列位置变更等操作。
自动建表时,对于 Mysql 历史表中的 bool 会映射成 int 类型,对于新增表中的 bool 会映射成 bool 类型。
操作步骤
步骤一:创建整库同步任务
进入配置中心 > 实时同步任务页面后,单击新建整库迁移任务。
步骤二:链路选择
在首页卡片中选择同步至 Iceberg 目标端的链路。
步骤三:数据来源设置
Kafka 来源
步骤四:数据目标设置
参数 | 说明 |
数据源 | 选择需要同步的目标数据源。 |
写入模式 | upsert:更新方式写入目标表。此方式下要求目标表中已设置主键: 任务将默认使用主键作为唯一键进行记录更新。 若表无主键则 append 写入。 append:追加模式写入数据表。 |
库表匹配策略 | Iceberg 中数据库以及数据表对象的名称匹配规则。 |
高级设置 | 可根据业务需求配置参数。 |
步骤五:配置运行资源和策略
Iceberg 整库同步任务提供任务级运行资源及数据失败写入处理策略。其中数据写入失败处理策略支持四种:
参数 | 描述 | |
集成资源配置 | 集成资源组 | 配置可用的集成资源组 |
| 资源分配方式 | 集成资源支持多种分配方式 1. 固定分配:此方式下不区分任务同步阶段,全量及增量同步过程中始终为当前任务分配固定资源量。此方式可避免任务间资源抢占,适用于任务运行过程中数据可能存在较大变动的场景。 2. 按同步阶段分配:按全量和增量不同同步阶段分配计划的资源使用量,以节约整体资源用量。 |
| 并行度 | 每个算子的默认并行度,任务实际占用CU数= JobManager 规格 + TaskManager 规格 × 并行度 |
消息处理策略 | 表及字段变更策略 | 新增表:自动建表、忽略变更、日志告警、任务出错 删除表:忽略变更、日志告警、任务出错 重命名表:忽略变更、日志告警、任务出错 清空表:忽略变更、日志告警、任务出错 新增列:自动新增列、忽略变更、日志告警、任务出错 删除列:自动删除列、忽略变更、日志告警、任务出错 重命名列:自动重命名列、忽略变更、日志告警、任务出错 修改列类型:自动修改列类型、忽略变更、日志告警、任务出错 |
| 写入异常 | 任务运行期间,目标端出现异常写入时的任务运行处理策略 异常重启:部分表写入异常时,所有表均暂停写入。此策略下任务将持续重启直到所有表正常同步,重启期间可能导致部分表数据重复写入 部分停止:部分表写入异常时,仅停止该表数据写入,其他表正常同步。已停止的表不可在本次任务运行期间恢复写入 忽略异常:忽略表内无法写入的异常数据并标记为脏数据。该表的其他数据、以及任务内的其他表正常同步 脏数据策略:忽略表内无法写入的异常数据并标记为脏数据。该表的其他数据、以及任务内的其他表正常同步。脏数据提供 COS 归档和不归档两种方案。 COS 归档:将无法写入的脏数据进行归档,需要配置 COS 数据源、存储桶、存储目录、内容分隔符及换行符。 不归档:不需要做其他操作。 |
任务运行策略 | checkpoint 间隔 | 设置 checkpoint 间隔时间,支持分钟/秒级。 |
| 最大重启次数 | 设置在执行过程中发生故障时任务最大的重启阈值,若运行中重启次数超过此阈值,任务状态将变为失败。设置范围为[-1,100], 阈值为0表示不重启,-1 表示不限制最大重启次数。 |
| 关联告警 | 为当前任务关联告警规则 |
场景示例:
任务 Task1下计划同步50张表,任务运行过程中表 A 内出现新增字段或字段类型变更:
默认策略:表 A 任务运行后新增了一个字段 "DEMO" 。此策略下,任务将在 iceberg 端的目标表 A 内新建字段 "DEMO" 后同步数据。期间,其余49张表数据正常同步。
部分停止:表 A 任务运行后将字段 "DEMO" 的进行了字段类型变更,并且变更后字段类型与目标端字段类型无法匹配写入。此策略下,任务将在停止源端表 A 的数据读取,后续任务仅同步其余49张表至目标端。
异常重启:表 A 任务运行后将字段 "DEMO "的进行了字段类型变更,并且变更后字段类型与目标端字段类型无法匹配写入。此策略下任务将在持续重启,期间任务内配置的所有50张表将暂停数据写入,直到表A字段纠正。
忽略异常:表 A 任务运行后将字段 "DEMO" 的进行了字段类型变更,并且变更后字段类型与目标端字段类型无法匹配写入。此策略下任务将忽略无法写入的异常数据,并标记为脏数据,表内其他数据正常同步。
步骤六:配置预览及任务提交
序号 | 参数 | 说明 |
1 | 提交 | 将当前任务提交至生产环境,提交时根据当前任务是否有生产态任务可选择不同运行策略: 若当前任务无生效的线上任务,即首次提交或线上任务处于“失败”状态,可直接提交。 若当前任务存在“运行中”或“暂停”状态的线上任务需选择不同策略。停止线上作业将抛弃之前任务运行位点,从头开始消费数据,保留作业状态将在重启后从之前最后消费位点继续运行。 说明: 单击立即启动任务将在提交后立即开始运行,否则需要手动触发才会正式运行。 |
2 | 锁定/解锁 | 默认创建者为首个持锁者,仅允许持锁者编辑任务配置及运行任务。若锁定者5分钟内没有编辑操作,其他人可点击图标抢锁,抢锁成功可进行编辑操作。 |
3 | 前往运维 | 根据当前任务名称快捷跳转至任务运维页面。 |
4 | 保存 | 预览完成后,可单击 保存 按钮保存整库任务配置。仅保存的情况下,任务将不会提交至运维中心。 |
任务提交检测
参数 | 说明 |
检测存在异常 | 支持跳过异常直接提交,或者终止提交。 |
检测仅存在警告及以下 | 可直接提交。 |
提交结果
任务提交中:
展示提交进度百分比。
提示用户勿刷新/关闭页面,文案:当前任务已提交成功,可前往运维进行任务状态及数据管理。
任务提交结果-成功:
展示任务提交成功结果。
提示成功及后续跳转:文案 “提交成功,10秒后将跳转至当前任务运维详情页面” “当前任务已提交成功,可前往运维进行任务状态及数据管理”。
展示任务提交失败原因:
失败原因返回。
后续步骤
Iceberg 日志采集写入节点配置
参数 | 说明 |
数据源 | 选择当前项目中可用的 iceberg 数据源。 |
库/表 | 选择该数据源中对应的库表。 |
写入模式 | iceberg 支持两种写入模式: Append:追加写入。 Upsert:以 upsert 方式插入消息,设置后消息仅只能被消费端处理一次以保证 Exactly-Once。 |
唯一键 | Upsert 写入模式下,需设置唯一键保证数据有序性,支持多选,Append 模式则不需要设置唯一键。 |
高级设置(可选) | 可根据业务需求配置参数。 |
数据类型转换支持
写入
内部类型 | Iceberg 类型 |
CHAR | STRING |
VARCHAR | STRING |
STRING | STRING |
BOOLEAN | BOOLEAN |
BINARY | FIXED(L) |
VARBINARY | BINARY |
DECIMAL | DECIMAL(P,S) |
TINYINT | INT |
SMALLINT | INT |
INTEGER | INT |
BIGINT | LONG |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DATE | DATE |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
TIMESTAMP_LTZ | TIMESTAMPTZ |
INTERVAL | - |
ARRAY | LIST |
MULTISET | MAP |
MAP | MAP |
ROW | STRUCT |
RAW | - |