Iceberg 数据源

最近更新时间:2024-08-16 16:15:22

我的收藏

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 目标端的链路。




步骤三:数据来源设置

步骤四:数据目标设置




参数
说明
数据源
选择需要同步的目标数据源。
写入模式
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
-