最新历史版本 :StarRocks数据源特性说明 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:
icon提示:
本文详细说明 StarRocks 数据源在 FDL 中的使用特性,包括使用限制以及在不同功能使用中的特殊情况,帮助用户更好地理解和应用数据源。

目录:

1. 通用限制编辑

列名如果包含中文,不支持写入。

2. 定时任务编辑

2.1 数据来源

数据来源写入的时候,空字符串要用一对单引号,不能用双引号。

4.2.7.3 版本及之后,定时任务支持读取 StarRocks 数据库的分区表。

2.2 写入分区表

1)4.2.7.3 及之后版本,定时任务支持写入 StarRocks 数据库的分区表。

6.png

2)目标表若为自动建表,支持选取目标表里的某些字段作为分区键。各配置项说明见下表:

配置项
说明
分区方式

  • 范围分区(RANGE)

  • 列表分区(LIST)StarRocks 3.1 及以上版本支持

  • 自动范围分区(StarRocks 3.0 及以上版本支持

  • 自动列表分区StarRocks 3.1及以上版本支持

分区字段

选择映射已有字段作为分区字段。

不同分区方式可选的分区字段如下:

  • 范围分区:DATE、DATETIME、TINYINT、SMALLINT、INT、BIGINT、LARGEINT

  • 列表分区:BOOLEAN、TINYINT、SMALLINT、INT、BIGINT、LARGEINT、DATE、DATETIME、CHAR、VARCHAR

  • 自动范围分区

    • date_trunc:DATE、DATETIME

    • time_slice:DATETIME

  • 自动列表分区:字符串(不支持 BINARY)、日期、整数和布尔值,不支持分区列的值为 NULL

分区配置

进行分区配置,支持添加多个分

StarRocks 3.0 及以上版的分区字段为「数值/日期时间/日期类型时,支持「自动分区间隔」

2.3 自动建表-表类型

若数据去向选择了「StarRocks」数据源,则设置去向端表时,需要选择表类型,如下表所示:

注1:StarRocks支持自动建表的表类型,表名首字母必须为英文,否则建表会失败。

注2:4.1.10.1 及之后版本,StarRocks 作为目标端&目标表的类型为自动建表时,自动将来源端主键标记为自动建表的主键。

表类型建表时设置项说明
明细模型(Duplicate Key)

不支持设置物理主键

支持设置 NOT NULL

4.1.11.5 及之后的版本,数据来源的配置方式为「选表」&目标表建表方式选择「自动建表」,字段映射中可自动获取来源表的 NOT NULL 信息

更新模型(Unique Key)

必须设置物理主键

支持设置 NOT NULL

当写入方式选择"基于标识字段,追加/更新/删除数据"时,只支持物理删除,不支持逻辑删除

主键模型(Primary Key)

必须设置物理主键

支持设置 NOT NULL

StarRocks 1.19及以上版本支持使用

4.2.3.1 及之后版本:来源表无主键,数据去向与映射Tab 中为目标表配置主键时,不支持将 Decimal 类型的字段设置为目标表的主键

聚合模型(Aggregate Key)此类型不支持自动建表

2.4 已存在表-表类型

若数据去向选择了「StarRocks」数据源,则设置去向端表时,需要选择表类型,后续设置写入方式时有一定的限制,如下表所示:

表类型写入限制
明细模型(Duplicate Key)

1)写入方式选择「直接将数据写入目标表」时,不支持配置主键映射和主键冲突策略

2)写入方式不支持基于标识字段,追加/更新/删除数据」

主键模型(Primary Key)

1)当选择"直接将数据写入目标表"时,主键冲突策略只能选择:

主键相同,覆盖目标表的数据

不支持:

主键相同,忽略输入源的数据

主键相同,停止写入并报错

2)更新模型(Unique Key),写入方式选择基于标识字段,追加/更新/删除数据」时,只支持物理删除,不支持逻辑删除

更新模型(Unique Key)

聚合模型(Aggregate Key)

1)写入方式选择「直接将数据写入目标表」时,不支持配置主键映射和主键冲突策略

2)不支持选择"基于标识字段,追加/更新/删除数据";

2.5 分隔符说明


FDL 版本
StarRocks版本说明
4.1.10.1之前-

写入 StarRocks 时,FDL 使用默认的分隔符分割行列数据,若待写入数据中包含默认分隔符,写入将报

示例说明:

待写入数据:

A
BC
1,123

若 FDL 使用, 作为分隔符,写入时,A 列的 1,1 将会被分割拆开写入,写入出错

建议:

用户可以先检查源端是否同步了二进制字段,将二进制字段取消同步,再使用公式将分隔符进行替换(例如替换为空格)

4.1.10.1及之后-4.2.3.13.0以下
3.0及以上若来源端数据包含 FDL 默认的分隔符,会帮用户做转义替换(使用转义符来转义数据中的行列分隔符),使数据写入成功
4.2.3.1 及之后
3.0及以上

支持指定行列分隔符。如下图所示

注:行列分隔符不能相同

2.png

列分隔符说明:

下拉框支持选项:自动处理、推荐分隔符(\x01)、英文逗号、制表符、英文分号、管道符、ASCII字符

列分隔符说明
自动处理

优点:

若来源端数据包含 FDL 默认的分隔符,会帮用户做转义替换(使用转义符来转义数据中的行列分隔符),确保数据写入成功

缺点:

会损失一些写入性能

推荐分隔符(\x01)

优点

大部分场景中,用户数据中不会包含 \x01,避免写入出错的同时,保证性能

缺点:

若用户数据中包含 \x01,FDL 不做转义替换,写入将报错

英文逗号、制表符、英文分号、管道符、ASCII字符若使用推荐分隔符报错,用户根据实际数据,指定分隔符

行分隔符说明:支持设置CR+LF、LF、ASCII字符作为行分隔符

4.2.4.3 版本「行分隔符」增加「推荐分隔符」为\x02,同时默认选中,保证替换为行分隔符后低版本数据正常。

「行分隔符」其实是\x02 ,替换为换行符后,对于低版本数据库,在没有正确处理「列分隔符」的情况下,会造成数据异常,因此增加该功能。

3.0以下3.0及以上版本不同的是,列分隔符中没有自动处理选项

2.6 数据分批

4.2.8.4 及之后版本,写入 StarRocks 时,支持设置数据分批条件,只要满足其中任何一个条件,就会立即生成一批数据并执行写入操作。

  • 自动分批:一般情况下使用「自动分批」配置即可;

  • 自定义分批:当大批量数据写入或高频次写入引发数据库压力过载问题,可以灵活调整分批写入配置。

任务类型
支持的功能限制说明
定时任务

支持自动分批

支持自定义分批:单条批数、单批大小

13.png

单条批数限制范围:0~9999999
单批大小限制范围:0~999
单批累积时间限制范围:100~1000000
实时任务

支持自动分批

支持自定义分批:单条批数、单批大小、单批累计时间

1.png

实时管道任务

支持自动分批

支持自定义分批:单条批数、单批大小、单批累计时间

1.png

注:若同步类型选择「存量+增量同步」,单批累计时间设置仅对增量阶段的数据生效

2.7 写入间隔

4.2.8.4 及之后版本,写入 StarRocks 时,支持设置写入间隔,控制数据的写入频率。如下图所示:

2.png


3. 实时管道任务编辑

注:数据管道需要数据库版本在 2.3 以上。

3.1 目标表为自动建表

1)若数据去向选择了「StarRocks」数据源,则设置去向端表时,需要选择表类型,如下表所示:

31.png

注1:StarRocks支持自动建表的表类型,表名首字母必须为英文,否则建表会失败。

注2:作为管道输出端时,不支持逻辑主键。

表类型建表时设置项说明
明细模型(Duplicate Key)

仅展示,不可选

更新模型(Unique Key)

仅展示,不可选

主键模型(Primary Key)

支持设置物理主键

支持设置 NOT NULL

StarRocks 1.19及以上版本支持使用

聚合模型(Aggregate Key)仅展示,不可选

2)4.2.7.3 及之后版本,管道任务中目标表若为自动建表,支持选取目标表里的某些字段作为分区键;目标表若为已存在表,支持写入分区表。

详细说明可参考本文 2.2 节

7.png

3.2 DDL 同步说明

4.1.10.1 之前版本,StarRocks 作为目标端时,不支持 DDL 同步;4.1.10.1 及之后版本,StarRocks 作为目标端时,支持 DDL 同步。

StarRocks 作为目标端,源端修改列类型时,DDL 支持的修改操作如下:

  • TINYINT/SMALLINT/INT/BIGINT 转换成 TINYINT/SMALLINT/INT/BIGINT/DOUBLE

  • TINYINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE/DECIMAL 转换成 VARCHAR

  • VARCHAR 支持修改最大长度

  • VARCHAR 转换成 TINYINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE

  • VARCHAR 转换成 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 类型数据不合法则转换失败,原始数据不变)

对于支持范围外的字段修改操作,数据库会报错,管道任务会打印 DDL 应用失败的日志。

3.3 同步时标记时间戳说明

4.1.7.2 之前版本,数据管道实时数据不支持「同步时标记时间戳」功能;FDL 为 4.1.7.2 及之后版本 & StarRocks 版本为 2.1 之后,支持「同步时标记时间戳」功能。

3.4 逻辑删除说明

选择了逻辑删除,且需要自动新建对应列字段,会导致作为输出端的管道任务第一次启动速度较慢(最长可能几十秒),这是因为SR 在更新 SCHEMA 时, 会锁表且时间较长,之后对目标表的修改操作会被阻塞。

3.5 分隔符说明

FDL 版本
StarRocks版本说明
4.1.10.1之前-

写入 StarRocks 时,FDL 使用默认的分隔符分割行列数据,若待写入数据中包含默认分隔符,写入将报

示例说明:

待写入数据:

A
BC
1,123

若 FDL 使用, 作为分隔符,写入时,A 列的 1,1 将会被分割拆开写入,写入出错

建议:

用户可以先检查源端是否同步了二进制字段,将二进制字段取消同步,再使用公式将分隔符进行替换(例如替换为空格)

4.1.10.1及之后3.0以下
3.0及以上若来源端数据包含 FDL 默认的分隔符,会帮用户做转义替换(使用转义符来转义数据中的行列分隔符),使数据写入成功

3.6 数据分批/写入间隔

4.2.8.4 及之后版本,实时管道任务写入 StarRocks 时,选择去向中支持设置数据分批、写入间隔。详情参见本文 2.6、2.7 节。

3.7 其他说明

insert 和 update 都处理为 insert, 通过 stream load 方式写入目标表。

4. 实时任务编辑

4.1 自动建表/已存在表

当DB表输出选择 StarRocks 作为数据去向:

选择输出表类型说明
已存在表

表类型无限制

表类型如果为明细模型:

  • 字段映射处不展示主键列,支持无主键同步(将插入事件的数据直接插入到目标表),任务重启时可能有重复数据,发生删除和更新事件将导致报错

5.0.0.4 及之后版本,当前任务中存在产生更新流的算子&写入 StarRocks 时,不支持无主键同步;会产生更新流的算子:CDC输入、分组汇总、数据关联(多个实时数据源进行关联)

  • 写入方式处,不支持配置主键映射,不支持配置逻辑删除

自动建表

表类型支持选择主键模型、明细模型

字段映射处,可以选择表类型为明细模型,当选择明细模型时:

  • 字段映射时不展示「主键」列,支持无主键同步(将插入事件的数据直接插入到目标表),任务重启时可能有重复数据,发生删除和更新事件将导致报错

5.0.0.4 及之后版本,当前任务中存在产生更新流的算子&写入 StarRocks 时,不支持无主键同步;会产生更新流的算子:CDC输入、分组汇总、数据关联(多个实时数据源进行关联)

  • 写入方式处,不支持配置主键映射,不支持配置逻辑删除

4.2 数据分批/写入间隔

4.2.8.4 及之后版本,实时任务写入 StarRocks 时,写入方式支持设置数据分批、写入间隔。详情参见本文 2.6、2.7 节。

5. 数据服务编辑

4.2.7.3 及之后版本,数据服务支持选择 Doris 数据库的分区表。