
1. 通用限制
1)FineDataLink 支持连接 Doris ,进行定时任务读写、管道任务写入、作为数据服务数据发布源、实时任务写入。
2)配置 Doris 数据连接时,输入的用户需要有 admin 权限,才能保证 FDL 功能的正常使用。
3)写入 Doris 数据库时,目标表表名、字段名中不能含中文。
2. 定时任务
2.1 数据来源
数据来源写入的时候,空字符串要用一对单引号,不能用双引号。
4.2.7.3 版本及之后,定时任务支持读取 Doris 数据库的分区表。
2.2 写入分区表
1)4.2.7.3 及之后版本,定时任务支持写入 Doris 数据库的分区表。如下图所示:
2)目标表若为自动建表,支持选取目标表里的某些字段作为分区键。如下图所示:
配置项 | 说明 |
---|---|
分区方式 |
|
分区字段 | 选择映射已有字段作为分区字段。 不同分区方式可选的分区字段如下:
|
分区配置 | 进行分区配置,支持添加多个分区 Doris 2.0 及以上版本的分区字段为「数值/日期时间/日期」类型时,支持「自动分区间隔」 |
2.3 自动建表-表类型
若数据去向选择了「Doris」数据源,则设置去向端表时,需要选择表类型,如下表所示:
注:4.1.10.1 及之后版本,Doris 作为目标端&目标表的类型为自动建表时,自动将来源端主键标记为自动建表的主键。
表类型 | 建表时设置项说明 |
---|---|
明细模型(Duplicate Key) | 不支持设置物理主键 支持设置 NOT NULL 4.1.11.5 及之后的版本数据来源的配置方式为「选表」时,目标表选择「自动建表」字段映射同步来源表的非空信息。 |
主键模型(Unique Key)- 读时合并 | 必须设置物理主键 支持设置 NOT NULL |
主键模型(Unique Key)- 写时合并 | 必须设置物理主键 支持设置 NOT NULL Doris 1.2.0 及以上版本支持使用 |
聚合模型(Aggregate Key) | 此类型不支持自动建表 |
2.4 已存在表-表类型
若数据去向选择了「Doris」数据源,则设置去向端表时,需要选择表类型,后续设置写入方式时有一定的限制,如下表所示:
表类型 | 写入限制 |
---|---|
明细模型(Duplicate Key) | 1)写入方式选择「直接将数据写入目标表」时,不支持配置主键映射和主键冲突策略 2)写入方式不支持「基于标识字段,追加/更新/删除数据」 |
主键模型(Unique Key)- 写时合并 | 当选择「直接将数据写入目标表」时,主键冲突策略只能选择: 主键相同,覆盖目标表的数据 不支持:
|
主键模型(Unique Key)- 读时合并 | |
聚合模型(Aggregate Key) | 1)当选择"直接将数据写入目标表"时,不支持: 配置主键映射以及主键冲突策略 2)不支持选择"基于标识字段,追加/更新/删除数据"; |
2.5 分隔符说明
FDL 版本 | Doris版本 | 说明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
4.1.10.1之前 | - | 写入 Doris 时,FDL 使用默认的分隔符分割行列数据,若待写入数据中包含默认分隔符,写入将报错 示例说明: 待写入数据:
若 FDL 使用, 作为分隔符,写入时,A 列的 1,1 将会被,分割拆开写入,写入出错 建议: 用户可以先检查源端是否同步了二进制字段,将二进制字段取消同步,再使用公式将分隔符进行替换(例如替换为空格) | ||||||||
4.1.10.1及之后-4.2.3.1 | 2.0以下 | |||||||||
2.0及以上 | 若来源端数据包含 FDL 默认的分隔符,会帮用户做转义替换(使用转义符来转义数据中的行列分隔符),使数据写入成功 | |||||||||
4.2.3.1 及之后 | 2.0及以上 | 支持指定行列分隔符。如下图所示: 注:行列分隔符不能相同 列分隔符说明: 下拉框支持选项:自动处理、推荐分隔符(\x01)、英文逗号、制表符、英文分号、管道符、ASCII字符
行分隔符说明:支持设置CR+LF、LF、ASCII字符作为行分隔符 4.2.4.3 版本「行分隔符」增加「推荐分隔符」为\x02,同时默认选中,保证替换为行分隔符后低版本 Doris 数据正常。 「行分隔符」其实是\x02 ,替换为换行符后,对于低版本 Doris,在没有正确处理「列分隔符」的情况下,会造成数据异常,因此增加该功能。 | ||||||||
2.0以下 | 与「2.0及以上版本」不同的是,列分隔符中没有「自动处理」选项 |
2.6 数据分批
4.2.8.4 及之后版本,写入 Doris 时,支持设置数据分批条件,只要满足其中任何一个条件,就会立即生成一批数据并执行写入操作。
自动分批:一般情况下使用「自动分批」配置即可;
自定义分批:当大批量数据写入或高频次写入引发数据库压力过载问题,可以灵活调整分批写入配置。
任务类型 | 支持的功能 | 限制说明 |
---|---|---|
定时任务 | 支持自动分批 支持自定义分批:单条批数、单批大小 | 单条批数限制范围:0~9999999 单批大小限制范围:0~999 单批累积时间限制范围:100~1000000 |
实时任务 | 支持自动分批 支持自定义分批:单条批数、单批大小、单批累计时间 | |
实时管道任务 | 支持自动分批 支持自定义分批:单条批数、单批大小、单批累计时间 注:若同步类型选择「存量+增量同步」,单批累计时间设置仅对增量阶段的数据生效 |
2.7 写入间隔
4.2.8.4 及之后版本,写入 Doris 时,支持设置写入间隔,控制数据的写入频率。如下图所示:
2.8 特殊场景说明
写入到 Doris 时,写入方式选择直接「直接将数据写入目标表」,设置主键冲突则覆盖,执行操作如下:
1)源表的所有字段先同步到目标表,比如字段 a 同步到目标表字段 a,任务运行后,此时目标表字段 a 有数据。
2)在字段映射里把字段 a 的映射关系取消,即代表着不同步字段 a 。
运行任务后将发现,目标表字段 a 的值都为 NULL(该问题等待产品后续解决)。
3. 实时管道任务
3.1 目标表为自动建表
1)若数据去向选择了「Doris」数据源,则设置去向端表时,需要选择表类型,如下表所示:
表类型 | 建表时设置项说明 |
---|---|
明细模型(Duplicate Key) | 仅展示,不可选 |
主键模型(Unique Key)- 读时合并 | 必须设置物理主键 支持设置 NOT NULL |
主键模型(Unique Key)- 写时合并 | 必须设置物理主键 支持设置 NOT NULL Doris 1.2.0 及以上版本支持使用; |
聚合模型(Aggregate Key) | 仅展示,不可选 |
2)4.2.7.3 及之后版本,管道任务中目标表若为自动建表,支持选取目标表里的某些字段作为分区键;目标表若为已存在表,支持写入分区表。
详细说明可参考本文 2.2 节。
3.2 DDL 同步说明
4.1.10.1 之前版本,Doris 作为目标端时,不支持 DDL 同步;4.1.10.1 及之后版本,Doris 作为目标端时,支持 DDL 同步。
Doris 作为目标端,源端修改列类型时,DDL 支持的修改操作如下:
TINYINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE 类型向范围更大的数字类型转换
TINTINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE/DECIMAL 转换成 VARCHAR
VARCHAR 支持修改最大长度
VARCHAR/CHAR 转换成 TINTINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE
VARCHAR/CHAR 转换成 DATE (目前支持"%Y-%m-%d", "%y-%m-%d", "%Y%m%d", "%y%m%d", "%Y/%m/%d, "%y/%m/%d"六种格式化格式)
DATETIME 转换成 DATE(仅保留年-月-日信息, 例如: 2019-12-09 21:47:05 <--> 2019-12-09)
DATE 转换成 DATETIME(时分秒自动补零, 例如: 2019-12-09 <--> 2019-12-09 00:00:00)
FLOAT 转换成 DOUBLE
INT 转换成 DATE (如果 INT 类型数据不合法则转换失败,原始数据不变)
除 DATE 与 DATETIME 以外都可以转换成 STRING,但是 STRING 不能转换任何其他类型。
对于支持范围外的字段修改操作,数据库会报错,会打印 DDL 应用失败的日志。
3.3 同步时标记时间戳说明
4.1.7.2 之前版本,数据管道实时数据不支持「同步时标记时间戳」功能;FDL 为 4.1.7.2 及之后版本 & Doris 版本为 2.0 之后,支持「同步时标记时间戳」功能。
3.4 主键说明
不支持逻辑主键。
3.5 分隔符说明
FDL 版本 | Doris版本 | 说明 | ||||||
---|---|---|---|---|---|---|---|---|
4.1.10.1之前 | - | 写入 Doris 时,FDL 使用默认的分隔符分割行列数据,若待写入数据中包含默认分隔符,写入将报错 示例说明: 待写入数据:
若 FDL 使用, 作为分隔符,写入时,A 列的 1,1 将会被,分割拆开写入,写入出错 建议: 用户可以先检查源端是否同步了二进制字段,将二进制字段取消同步,再使用公式将分隔符进行替换(例如替换为空格) | ||||||
4.1.10.1及之后 | 2.0以下 | |||||||
2.0及以上 | 若来源端数据包含 FDL 默认的分隔符,会帮用户做转义替换(使用转义符来转义数据中的行列分隔符),使数据写入成功 |
3.6 数据分批/写入间隔
4.2.8.4 及之后版本,实时管道任务写入 SelectDB 时,选择去向中支持设置数据分批、写入间隔。详情参见本文 2.6、2.7 节。
4. 实时任务
4.1 自动建表/已存在表
当 DB 表输出 选择 doris 作为数据去向:
选择输出表类型 | 说明 |
---|---|
已存在表 | 表类型无限制 表类型如果为明细模型:
5.0.0.4 及之后版本,当前任务中存在产生更新流的算子&写入 Doris 时,不支持无主键同步;会产生更新流的算子:CDC输入、分组汇总、数据关联(多个实时数据源进行关联)
|
自动建表 | 4.2.1.4 之前版本,表类型只能选择主键模型;4.2.1.4 及之后版本,表类型可以选择明细模型 字段映射处,可以选择表类型为明细模型,当选择明细模型时:
5.0.0.4 及之后版本,当前任务中存在产生更新流的算子&写入 Doris 时,不支持无主键同步;会产生更新流的算子:CDC输入、分组汇总、数据关联(多个实时数据源进行关联)
|
4.2 数据分批/写入间隔
4.2.8.4 及之后版本,实时管道任务写入 SelectDB 时,写入方式支持设置数据分批、写入间隔。详情参见本文 2.6、2.7 节。
5. 数据服务
4.2.7.3 及之后版本,数据服务支持选择 Doris 数据库的分区表。