离线同步
离线同步作为离线数据迁移的主要产品,承担了离线数据上云等数据迁移的重要工作,为整个离线数据开发提供数据,起到了数据准备的作用。目前版本数据集成在数据源端支持 MySQL、SQL Server、Oracle、PostgreSQL、Hana 数据库,在目的端支持 Hive、Doris 以及 EDAP。
基础条件
资源配置
资源配置在EDAP首页侧边栏系统中心>资源管理中,点击添加资源配置需要的数据源。
进入离线同步
- 没有项目的情况下,选择数据加工-数据集成系统会自动跳转新建项目界面。点击新建项目,填入您的项目相关属性后点击提交项目即创建成功。
注:项目中文名和英文名是必填项,且项目英文名创建后不允许修改。
- 已有项目,进入离线同步。在概览中选择数据加工-数据集成(顶部导航)-离线同步,或者选择侧边导航数据加工-数据集成(顶部导航)-离线同步。
操作步骤
任务创建 --> 任务配置 --> 任务运维
任务创建
在开始特定数据集成任务的配置之前,必须在平台内创建任务。无论所涉及的数据源或目标的类型如何,都需要执行此预备步骤。
如果没有任务,目前支持两种创建任务方式:
- 进入离线同步界面,单击创建任务按钮。
- 在离线同步界面中,点击列表页面中间的马上创建。
以上两种方式创建任务后,跳转任务配置界面。
图一 创建任务界面
任务配置
目标端数据源类型为Doris、EDAP,配置一个数据集成任务分为“设置同步来源与目标”、“读取设置”、“批量设置”、“写入设置”四个步骤。其中,“设置同步来源与目标”、“读取设置”属于公共配置,“写入设置”在目标端上有所不同。
本章节首先以EDAP为例分析公共配置,然后按照目标端类型分别介绍“写入设置”的操作说明。
设置同步来源与目标
表一 相关配置项说明
类别 | 中文名称 |
---|---|
基本信息 | |
集成任务名称 | 只能包含英文字母、数字、中划线和下划线,且以英文字母开头,不大于64个字符 |
源端设置 | |
类型 | 支持MySQL、SQL Server、Oracle、PostgreSQL、Hana五种类型 |
数据源 | 在源端设置配置数据类型和选择已配置好的数据源,数据源配置在EDAP主页配置栏。 |
目标端设置 | |
类型 | 目前支持EDAP、Hive、Doris类型 |
数据源 | 根据选择的数据类型展示对应的数据源 |
数据库 | 根据选择的数据源展示对应的数据库 |
任务配置 | |
资源配置 | 资源配置需要在 EDAP 界面上配置资源,选资源管理,找到合适的计算资源,点击计算资源右侧的绑定项目来绑定到该 EDAP 项目中 |
读取方式 | 批量读取 |
读取频率 | 定时读取和同步一次。默认为同步一次,定时读取可设置定时触发的周期性任务。值得注意的是,定时任务的数据集成支持“全量”和“增量”两种方式,在后续的读取设置中,配置where语句为空就是“全量”方式进行数据集成,配置where语句过滤某些特定字段就可实现“增量”方式进行数据集成,如过滤时间相关字段或单调递增字段等。建议定时读取配置的作业执行间隔时间大于作业的运行时间。定时读取可配置 Cron 表达式; |
读取速率限制 | 默认5000行/s |
数据目的地设置 | |
同步前,允许清空目标表 | 默认开启。开启后,写入目标表前进行清空。针对分区表,不论是否开启,对同一分区的重复写入,均会先清空分区数据再重写该分区 |
数据源变化设置 | |
数据源删除正在同步的表 | 选择继续同步其他表或者暂停数据任务。已存在表被重命名,系统会将任务表删除,重命名的表识别为新表 | 同步的表字段被删除 | 选择继续同步,目的地字段传空值或者暂停数据服务。重命名字段,系统会将任务原始字段删除, 重命名为新增字段 | 同步的表发现新增字段 | 选择继续同步新增字段或忽略新增字段。 |
读取设置
- 点击读取设置旁边添加按钮,在读取列表中可以在单个同步任务中批量选择多个数据库和表进行读取,还可以在编辑阶段向任务添加更多表。
- 读取设置中,左上方默认为关闭批量设置的状态,点击左边的表,针对每个单表进行配置,通过下方的where语句过滤单表的数据,目前仅支持 logicStartTime 宏。
注:LST宏表达式格式: ${logicalStartTime(yyyy.?MM.?dd.? HH.?mm.?ss.?(SSS)?(,[+-]?[0-9]*[yMdhms])? )}
批量设置
可批量设置所有表的部分写入设置。可打开左上方“批量设置”按钮,通过where语句批量过滤不需要的数据,在执行中是将此where语句应用在每个单表上,分别过滤每个所选择的表中的数据。在读取设置结束后,进入批量设置。填入副本数和需要的表名设置后点击下一步即设置成功。
批量设置仅在⽬标端建表⽅式为⾃动建表时⽣效
EDAP类型
EDAP批量设置界面,可批量配置表的存储格式、表名的前后缀、新增字段、静态分区。
目标表设置
表二 目标表说明
配置项 | 默认值 | 说明 |
---|---|---|
数据糊格式 | 无 | 必选,枚举值:无、hudi |
表类型 | 无 | 必选,管理表或外部表 |
存储格式 | Parquet | 必选无:Parquet、ORChudi:Parquet |
表名设置 | 无 | 无前后缀、增加前后缀、增加前缀、增加后缀 |
前缀 | 无 | 必填 |
新增字段设置
可以批量增加目标端表字段,同时支持固定值及时间宏函数变量:
表三 新增字段说明
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称,若新增字段名称与表已有字段冲突,则单表配置或任务完成时进行右上角报错提示:新增字段与表已有字段冲突! |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
默认值 | 无 | 可填写固定值,如,1可填写时间宏函数 |
字段注释 | 无 | 输入注释 |
类型设置 | 无 | 主要是针对前面一列的类型做特定的配置,当前decimal, varchar, char类型会用到,设置精度和长度 |
操作 | 无 | 新增一行/删除 |
分区设置
表四 分区字段说明
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称 |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
分区值 | 无 | 填写分区值。1、${timeFormat([column],format)}; 其中column为源表时间类型(Date、Timestamp 、DateTime)字段名, 例如:${timeFormat(inspection_time,'yyyy-MM-dd')} 2、${logicalStartTime(format,[offset])}; 即任务执行时间;其中offset为y-年、M-月、d-日、h-小时、m-分钟、s-秒 例如:${logicalStartTime(yyyy-MM-dd-HH, -1d)} 3、常量填充 |
操作 | 无 | 新增一行/删除 |
Doris类型
Doris批量设置界面,可批量配置表的存储格式、表名的前后缀、新增字段
目标表设置
表五 目标表设置字段说明
配置项 | 默认值 | 说明 |
---|---|---|
Doris表格式 | Duplicate明细表 | 下拉,必选枚举值:Duplicate明细表、Unique唯一表实时仅支持唯一表。选择Unique表并且源端没有主键或者唯一索引时,默认建立Duplicate表 |
表名设置 | 无 | 无前后缀、增加前后缀、增加前缀、增加后缀 |
副本数 | 3 | 默认副本数为3。如果 BE 节点数量小于3,则需指定副本数小于等于 BE 节点数量。 |
新增字段设置
可以批量增加目标端表字段,同时支持固定值及时间宏函数变量:
表六 新增字段说明
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称,若新增字段名称与表已有字段冲突,则单表配置或任务完成时进行右上角报错提示:新增字段与表已有字段冲突! |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
默认值 | 无 | 可填写固定值,如,1可填写时间宏函数 |
字段注释 | 无 | 输入注释 |
类型设置 | 无 | 主要是针对前面一列的类型做特定的配置,当前decimal, varchar, char类型会用到,设置精度和长度 |
操作 | 无 | 新增一行/删除 |
HIVE类型
EDAP批量设置界面,可批量配置表的存储格式、表名的前后缀、新增字段、静态分区。
目标表设置
表七 目标表说明
配置项 | 默认值 | 说明 |
---|---|---|
数据糊格式 | 无 | 必选,枚举值:无、hudi |
表类型 | 无 | 必选,管理表或外部表 |
存储格式 | Parquet | 必选无:Parquet、ORChudi:Parquet |
表名设置 | 无 | 无前后缀、增加前后缀、增加前缀、增加后缀 |
前缀 | 无 | 必填, |
新增字段设置
可以批量增加目标端表字段,同时支持固定值及时间宏函数变量:
表八 新增字段说明
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称,若新增字段名称与表已有字段冲突,则单表配置或任务完成时进行右上角报错提示:新增字段与表已有字段冲突! |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
默认值 | 无 | 可填写固定值,如,1可填写时间宏函数 |
字段注释 | 无 | 输入注释 |
类型设置 | 无 | 主要是针对前面一列的类型做特定的配置,当前decimal, varchar, char类型会用到,设置精度和长度 |
操作 | 无 | 新增一行/删除 |
分区设置
表九 分区字段说明
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称 |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
分区值 | 无 | 填写分区值。1、${timeFormat([column],format)}; 其中column为源表时间类型(Date、Timestamp 、DateTime)字段名, 例如:${timeFormat(inspection_time,'yyyy-MM-dd')} 2、${logicalStartTime(format,[offset])}; 即任务执行时间;其中offset为y-年、M-月、d-日、h-小时、m-分钟、s-秒 例如:${logicalStartTime(yyyy-MM-dd-HH, -1d)} 3、常量填充 |
操作 | 无 | 新增一行/删除 |
写入设置
HIVE类型
表类型、存储方式等均在上一步做了批量设置,此步可在左侧目录树中指定表,进行建表方式、表达式、分区等个性化设置,接下来展开说明:
- HIVE支持自动建表和选择已有表两种方式。
- 当建表方式选择自动建表时,数据集成会在目标端自动创建对应表,字段名称和类型默认与数据源端一致,页面中的“箭头”表示数据源和目的端表的字段映射关系。用户可根据需要更改目的端表名、字段名称、字段类型、默认值。
- 此外,用户可在目的表点击每个字段最右侧的删除符号将此字段删除,表示在数据集成过程中过滤此字段,不同步源端的此字段。然后,在右侧列表最下方可以添加普通字段或分区字段。
- HIVE表类型支持hudi表,hudi表类型默认为MOR。
表十 HUDI表说明
配置项 | 默认值 | 说明 |
---|---|---|
EDAP表类型 | hudi | 枚举值:hudi |
存储格式 | Parquet | Hudi表:Parquet |
Hudi表类型 | MOR | hudi表枚举值:MOR、COW,默认MOR |
- HIVE类型支持批量配置,单击批量配置按钮弹出批量设置弹窗,详见批量设置。
表十一 批量设置字段属性说明
配置项 | 默认值 | 说明 |
---|---|---|
数据湖格式 | hudi | 枚举值:hudi |
存储格式 | Parquet | hudi:Parquet |
hudi表类型 | MOR | hudi表枚举值:MOR、COW,默认MOR |
hudi表主键 | EDAP_UUID | 字段名允许修改,提示说明:若不指定目标端主键,Hudi表默认生成EDAP_UUID字段作为表主键,字段值为随机UUID字符串 |
- 当建表方式设置为选择现有表时,需要指定目标表名称。您可以使用“同名映射”或“同行映射”来批量确定数据源端和目的端表的字段映射方式。
此外,还可以在可视化界面中绘制手动连接以自定义字段映射。
- 打开表达式设置时,
表十二 目前支持的transform函数列表
类别 | 中文名称 | 英文名称及参数 | 返回值 | 详细功能描述 |
---|---|---|---|---|
数学函数 | 绝对值 | abs() | T | T是数值类型,包括int、long、float、double、decimal |
字符串函数 | 连接字符串 | concat(String str1, String str2) | String | 连接str1和str2两个字符串 |
去掉字符串前后的空格 | trim() | 去掉操作字符串前后的空格 | ||
翻转字符串 | reverse() | 翻转操作字符串 | ||
返回大写字符 | toupper() | 返回操作字符串的大写形式 | ||
返回小写字符 | tolower() | 返回操作字符串的小写形式 | ||
字符串替换 | replace(String old, String new) | 搜索操作字符串中的old子串,如果能够找到则使用new子串来替换 | ||
功能函数 | 条件过滤 | filter(String operator, String criteria) | boolean | operator是支持的运算符,criteria是过滤值,其支持的运算符如表2所示 |
表十三 条件过滤的支持运算符类型关系如下
序号 | 操作符 | boolean | int | long | float | double | bytes | string | date | decimal | timestamp |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | = | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
2 | != | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
3 | != | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
4 | > | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
5 | >= | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
6 | < | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
7 | <= | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
8 | contains | ✔️ | |||||||||
9 | notContain | ✔️ | |||||||||
10 | startsWith | ✔️ | |||||||||
11 | endsWith | ✔️ | |||||||||
12 | notStartWith | ✔️ | |||||||||
13 | notEndWith | ✔️ | |||||||||
14 | matchesRegex | ✔️ | |||||||||
15 | notMatchRegex | ✔️ |
Doris类型
选择数据集成目的端的类型为Doris时,相关配置操作大部分与HIVE的配置操作类似,本小节重点说明Doris类型相关配置操作的不同之处,其他操作可参考上小节。
- 数据源变化设置中,以Doris为目的端的配置只支持“数据源删除正在同步的表”设置和“同步的表字段被删除”设置,不支持“同步的表发现新增字段”设置;
- 写入设置中,建表方式支持自动建表/选择已有表。自动建表情况下,表的类型支持2种:Duplicate明细表和Unique唯一表。
EDAP类型
选择数据集成目的端的类型为EDAP时,相关配置操作大部分与HIVE的配置操作类似,本小节重点说明EDAP类型相关配置操作的不同之处,其他操作HIVE类型。
- 在设置同步来源与目标时,选择目的端类型为hive,需指定数据库与数据表的存储路径,存储路径只有在写入设置中选择自动建表才会生效。
前置检查
完成任务配置后,转到离线任务创建列表并选择【前置检查】。单击开始检查以验证任务配置是否可以正常运行。
表十四 检查结果说明
检查结果 | 结果说明 |
---|---|
通过 | 如果检查通过,则任务可以正常运行。 |
失败 | 如果检查失败,检查内容会列出具体的错误原因。您需要根据这些错误修改任务配置并再次执行检查,直至成功通过。 |
任务运维
任务操作
任务运维列表显示任务名称、类型、来源和目标等详细信息。您可以运行、暂停或删除任务。点击运行,任务即开始运行,一次性任务在一次运行后结束;而定时任务则继续,刚创建的任务处于“已发布”状态,可以根据用户需求更改为“正在运行”或“暂停”状态。如果任务失败,则任务状态显示“失败”;如果运行成功,任务状态为“成功”。
任务概况
点击任务名称,可具体查看任务概况。概况内容包括任务的具体详细信息,且在监控界面右上角的编辑可编辑作业配置。
注:更新作业配置时任务的状态需要提前“暂停”,失败或者正在运行等状态的任务无法编辑。
表十五 任务概况说明
任务概况名称 | 描述 |
---|---|
概览 | 概览可看见任务目前正在执行情况,包含读写数据量等,并且可以单独重试失败的单表任务和查看操作日志。 |
集成基本信息 | 在集成基本信息部分,您可以详细的查看创建任务时设置的基本信息。包括源端设置、目标端设置、任务配置等。 |
读取设置和写入设置 | 点击读取设置或写入设置,然后从左侧选择库或表,即可查看任务创建过程中设置的过滤器配置。 |