数据集成提供了 Doris 的实时写入能力,本文为您介绍使用 Doris 进行实时数据同步的当前能力支持情况。
支持版本
目前数据集成已支持 Doris 单表及整库实时写入,使用实时同步能力需遵循以下版本限制:
类型 | 版本 |
Doris | 0.15、1.x |
使用限制
Doris 支持 [DUPLICATE KEY|UNIQUE KEY|AGGREGATE KEY] 三种数据模型,若需以 Upsert 方式写入 Doris,需要确保数据模型为 UNIQUE KEY,详情请参见 数据模型 - Apache Doris。
来源表有主键时自动创建的 Doris 目标表为 UNIQUE KEY;来源表无主键时自动创建的 Doris 目标表为 DUPLICATE KEY。
当来源端为 Kafka 时,Doris 仅支持同步至已有库表,任务运行前需保证目标库表已存在。
整库写入节点配置
支持的数据来源
当前支持将以下来源类型的数据实时整库同步到 Doris 目标端:
数据目标设置
参数 | 说明 |
数据源 | 选择需要同步的目标数据源。 |
库/表匹配策略 | 设置任务运行时 Doris 中数据库以及数据表对象的名称匹配规则: 与来源库/表同名:任务运行时系统将默认在目标数据源内匹配与来源库/表同名对象。 自定义:自定义规则支持设置来源与目标之间特殊关系,例如统一将源端库名或表名加上统一固定前缀或者后缀在写入目标库或表任务运行时。此策略下,任务运行时系统将默认根据命名规则匹配目标对象。 说明: 当来源端为 Kafka 时,同步至 Doris 的整库任务全量同步阶段暂不支持自动建库/表,请提前在 Doris 端构建存量库、表对象以保证任务正常运行 。 |
批量建表 | 当来源端为 MySQL、TDSQL-C MySQL、TDSQL MySQL 时,支持在任务配置阶段批量创建 Doris 目标表。 单击批量建表出现下方弹框,系统会根据用户设置的库、表匹配规则进行目标库、表匹配,目标端不存在的表出现在匹配失败的库/表中,目标端已存在的表出现在匹配成功的库/表中。 对于匹配失败的表,或者匹配成功但想删除重建的表(可将目标表创建方式改为删除已有表并新建)可进行建表操作,单击开始建表会按源端表结构进行目标表创建。创建结果如下方展示,用户可查看创建失败的表及原因,可查看、修改建表语句,并重试失败项。 |
高级设置 | 设置 Doris 写入端的运行参数,此参数可根据业务需求配置 |
单表写入节点配置
1. 在数据集成页面左侧目录栏单击实时同步。
2. 在实时同步页面上方选择单表同步新建(可选择表单和画布模式)并进入配置页面。
参数 | 说明 |
数据去向 | 需要写入的 Doris 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
高级设置(可选) | 可根据业务需求配置参数。要求如下: 1. 一个参数一行;若需配合使用的参数写在一行内。 2. 每个参数带默认值。 |
日志采集写入节点配置
参数 | 说明 |
数据源 | 选择当前项目中可用的 Doris 数据源。 |
库/表 | 选择该数据源中对应的库表。 |
高级设置(可选) | 可根据业务需求配置参数。 |
写入数据类型转换支持
Doris 写入支持的数据类型及转换对应关系如下:
内部类型 | Doris 类型 |
NULL | NULL_TYPE |
BOOLEAN | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DATE | DATE |
TIMESTAMP | DATETIME |
DECIMAL | DECIMAL |
STRING | CHAR |
STRING | LARGEINT |
STRING | VARCHAR |
STRING | STRING |
DECIMAL | DECIMALV2 |
ARRAY | ARRAY |
MAP | MAP |
STRING | JSON |
STRING | VARIANT |
STRING | IPV4 |
STRING | IPV6 |
常见问题
Doris 规格如何选型及调优?
导入任务过多,新导入任务提交报错 “current running txns on db xxx is xx, larger than limit xx ”?
调整 fe 参数 : max_running_txn_num_per_db,默认100,可适当调大,建议控制在500以内。
导入频率太快出现 err=[E-235] 错误?
参数调优建议:可通过适当调大 max_tablet_version_num 参数暂时解决,此参数默认200,建议控制在2000以内。
业务调优建议:降低导入频率才能根本解决这个问题。
导入文件过大,被参数限制。报错 “The size of this batch exceed the max size ”?
调整 be 参数 : streaming_load_max_mb,建议超过需要导入的文件大小。
导入数据报错:“[-238]”?
原因:-238 错误通常出现在同一批导入数据量过大的情况,从而导致某一个 tablet 的 Segment 文件过多(由 )。
参数调优建议:可适当调大BE参数max_segment_num_per_rowset ,此参数默认值200,可按倍数调大(如400、800),建议控制在2000以内;
业务调优建议:建议减少一批次导入的数据量。
导入失败,报错:“too many filtered rows xxx, "ErrorURL":"或 Insert has filtered data in strict mode, tracking url=xxxx.”?
原因:表的 schema、分区等与导入的数据不匹配。可在 TCHouse-P Studio 或客户端执行 doris 命令查看具体原因:show load warnings on `<tracking url>`,<tracking url> 即为报错信息中返回的 error url。