离线同步
简介
概念上:数据集成作为离线数据迁移的主要产品,承担了离线数据上云等数据迁移的重要工作,为整个离线数据开发提供数据,起到了数据准备的作用。目前版本数据集成在数据源端支持 MySQL、SQL Server、Oracle、PostgreSQL、Hana 数据库,在目的端支持 Hive、Doris 以及 EDAP。
前期准备上:在使用数据集成前,首先需要在EDAP平台创建好所需的数据源连接、EDAP项目和配置相关的计算资源。
文档组织形式上:对于数据源端的不同数据库,相关的界面配置、操作类似,本文档不做区分。对于数据目的端的不同类型,界面和操作有所不同。本文档先介绍共同的任务创建流程,后续的配置操作指南按照目的端类型分别进行介绍。最后介绍任务通用的运维方法。
最终,本文档的目的是为用户提供简单易懂的数据集成操作指南,方便用户快速上手。
任务创建
在开始具体任务的配置前,不论选择哪种类型的数据源或目的端,都需要创建数据集成任务,流程如下:
- 点击已创建的EDAP项目(点击 “新建项目” 来创建新的项目)
- 点击左侧【数据集成】-【离线同步】-【创建任务 / 马上创建】
3.创建完成后,自动跳转到配置界面。
任务配置
目标端数据源类型为Doris、EDAP、Hive,配置一个数据集成任务分为“设置同步来源与目标”、“读取设置”、“批量设置”、“写入设置”四个步骤。其中,“设置同步来源与目标”、“读取设置”属于公共配置,“批量设置”、“写入设置”在不同目标端上有所不同。
本章节首先以EDAP为例分析公共配置,然后按照目标端类型分别介绍“批量设置”、“写入设置”的操作说明。
设置同步来源与目标
- 配置任务基本名称(注意命名规范要求:只能包含英文字母、数字、中划线和下划线,且以英文字母开头,不大于64个字符),同一个项目中的同步任务名不能重复;
- 在源端设置配置数据类型和选择已配置好的数据源,数据源配置在edap主页配置栏:
目前数据集成源端类型支持 MySQL、SQL Server、Oracle、Hana、PostgreSQL 版本:
数据源 | 支持版本 |
---|---|
MySQL | driver版本5.1.38,支持MySQL 4.1, 5.0, 5.1, 5.5, 5.6, 5.7, 8.0 |
SQL Server | driver版本6.0, SQLServer 2016, 2014, 2012 |
Oracle | ojdbc7-12.1.0.2.jar,支持Oracle 12.1 or 12cR1 |
Hana | ngdbc-2.4.76.jar,支持HANA 2.0 |
PostgreSQL | postgresql-jdbc-42.2.19.jar, 支持PostgreSQL 8.2 or newer |
- 在目的端设置目标类型、数据源和数据库,目前类型支持Hive(只支持 Hive3)、Doris、EDAP 数据湖,这里选择 EDAP 类型为例进行配置;
- 迁移类型针对所有目标端类型,目前可支持的迁移类型:全量及增量迁移、增量迁移
其中,目标端如果为EDAP类型,增加资源配置选项,可以选择计算资源;资源配置需要在 EDAP 界面上配置资源,选择【资源管理】,找到合适的计算资源,点击计算资源右侧的【绑定项目】来绑定到该 EDAP 项目中。
- 任务配置中选择配置好的EDAP计算资源。读取方式固定为批量读取。
- 读取频率可选择【同步一次】或者【定时读取】,默认为【同步一次】,【定时读取】可设置定时触发的周期性任务,界面如下。值得注意的是,定时任务的数据集成支持“全量”和“增量”两种方式,在后续的【读取设置】中,配置where语句为空就是“全量”方式进行数据集成,配置where语句过滤某些特定字段就可实现“增量”方式进行数据集成,如过滤时间相关字段或单调递增字段等。建议【定时读取】配置的作业执行间隔时间大于作业的运行时间。定时读取可配置 Cron 表达式;
- 限流设置可选择每秒读取行数或者每秒读取数据量大小(目前只支持按行限速),0 表示不限速;
- 数据目的地设置可选择同步前能否清空目标文件;
- 数据源变化设置可配置同步过程中数据源发生增删变化时的同步策略;
- 点击页面底的“下一步”。
读取设置
- 可批量选择需要读取的数据库、表,一个同步任务中可选择多个库下面多个表的同步,在编辑任务时可增加表;
2.读取设置中,左上方默认为关闭“批量设置”的状态,点击左边的表,针对每个单表进行配置,通过下方的where语句过滤单表的数据,目前仅支持 logicStartTime 宏;
3.读取设置,可打开左上方“批量设置”按钮,通过where语句批量过滤不需要的数据,在执行中是将此where语句应用在每个单表上,分别过滤每个所选择的表中的数据。批量过滤适合多个表具有相同字段的场景,目前仅支持 logicStartTime 宏;
注:LST宏表达式格式:
${logicalStartTime(yyyy.?MM.?dd.? HH.?mm.?ss.?(SSS)?(,[+-]?[0-9]*[yMdhms])? )}
- 点击页面底的“下一步”,或点击“上一步”返回“设置同步来源与目标”页面。
批量设置
可批量设置所有表的部分写入设置。注意:批量设置仅在目标端建表方式为“自动建表”时生效。
Hive类型
下图为Hive批量设置界面,可批量配置表的存储格式、表名的前后缀、新增字段、静态分区,设置完成后可点击下一步确认。
目标表设置
配置项 | 默认值 | 说明 |
---|---|---|
存储格式 | Parquet | 必选,枚举值:Parquet、ORC |
表名设置 | 无 | 无前后缀、增加前后缀、增加前缀、增加后缀 |
新增字段设置
可以批量增加目标端表字段,同时支持固定值及时间宏函数变量,默认添加到表最后一列:
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称 |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
默认值 | 无 | 可填写固定值:如,1可填写时间宏函数 |
操作 | 无 | 删除/增加 |
分区设置
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称 |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
分区值 | 无 | 填写分区值 |
操作 | 无 | 删除/增加 |
EDAP类型
下图为EDAP批量设置界面,可批量配置表的存储格式、表名的前后缀、新增字段、静态分区,设置完成后可点击下一步确认。
目标表设置
配置项 | 默认值 | 说明 |
---|---|---|
数据湖格式 | 无 | 必选,枚举值:无、hudi |
存储格式 | Parquet | 必选无:Parquet、ORChudi:Parquet |
hudi表类型 | 默认无此项 | hudi表枚举值:MOR、COW,默认MOR |
hudi表主键 | 默认无此项 | 字段名允许修改,提示说明:可指定目标端主键名称,若不指定目标端主键,默认生成EDAP_UUID字段作为表主键,字段值为随机UUID字符串 |
表名设置 | 无 | 无前后缀、增加前后缀、增加前缀、增加后缀 |
新增字段设置
可以批量增加目标端表字段,同时支持固定值及时间宏函数变量:
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称,若新增字段名称与表已有字段冲突,则单表配置或任务完成时进行右上角报错提示:新增字段与表已有字段冲突! |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
默认值 | 无 | 可填写固定值:如,1可填写时间宏函数 |
操作 | 无 | 增加/删除 |
分区设置
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称 |
字段类型 | String | 枚举值:String、INT、BIGINT、DOUBLE、DECIMAL |
分区值 | 无 | 填写分区值 |
操作 | 无 | 增加/删除 |
Doris类型
下图为Doris批量设置界面,可批量配置表的存储格式、表名的前后缀、新增字段,设置完成后可点击下一步确认。
目标表设置
配置项 | 默认值 | 说明 |
---|---|---|
Doris表格式 | Duplicate明细表 | 下拉,必选枚举值:Duplicate明细表、Unique唯一表实时仅支持唯一表 |
表名设置 | 无 | 无前后缀、增加前后缀、增加前缀、增加后缀 |
副本数 | 3 | 默认副本数为3。如果 BE 节点数量小于3,则需指定副本数小于等于 BE 节点数量。 |
Doris表格式后边的【帮助信息】 | 隐藏提示信息,仅显示问号 | 鼠标悬浮在帮助问号上,提示:“选择Unique表并且源端没有主键或者唯一索引时,默认建立Duplicate表” |
新增字段设置
可以批量增加目标端表字段,同时支持固定值及时间宏函数变量:
配置项 | 默认值 | 说明 |
---|---|---|
字段名称 | 无 | 新增字段名称 |
字段类型 | String | 支持全部edapType |
默认值 | 无 | 可填写固定值:如,1、2、3...可填写时间宏函数 |
操作 | 添加、删除 | 支持添加、删除操作 |
写入设置
Hive类型
表类型、存储方式等均在上一步做了批量设置,此步可在左侧目录树中指定表,进行建表方式、表达式、分区等个性化设置,接下来展开说明:
- Hive支持“自动建表”和“选择已有表”两种方式。当【建表方式】选择“自动建表”时,数据集成会在目标端自动创建对应表,字段名称和类型默认与数据源端一致,页面中的“箭头”表示数据源和目的端表的字段映射关系。用户可根据需要更改目的端表名、字段名称、字段类型、默认值。此外,用户可在目的表点击每个字段最右侧的删除符号将此字段删除,表示在数据集成过程中过滤此字段,不同步源端的此字段。然后,在右侧列表最下方可以添加普通字段或分区字段;
- 当【建表方式】选择“选择已有表”时,需要指定目的端表名,可点击同名映射、同行映射来批量确定数据源端和目的端表的字段映射方式,也可通过手动连线的可等视化方法来设置字段映射关系;
- 打开“表达式设置”,目前支持的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是过滤值,其支持的运算符如下所示 |
其中条件过滤的支持运算符类型关系如下:
序号 | 操作符 | boolean | int | long | float | double | bytes | string | date | decimal | timestamp | 备注 |
1 | = | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
2 | != | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
2 | != | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
3 | > | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||
4 | >= | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||
5 | < | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||
6 | <= | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||
7 | contains | ✔️ | ||||||||||
8 | notContain | ✔️ | ||||||||||
9 | startsWith | ✔️ | ||||||||||
10 | endsWith | ✔️ | ||||||||||
11 | notStartWith | ✔️ | ||||||||||
12 | notEndWith | ✔️ | ||||||||||
13 | matchesRegex | ✔️ | ||||||||||
14 | notMatchRegex | ✔️ |
例如:
4.配置分区时,目前支持纯静态分区或者设置静态分区为主分区,不支持纯动态分区。点击目的地分区最下方的“新增一行”可创建静态分区,点击最右侧“删除”可删除静态分区。在指定静态分区后,再点击目的端表字段最右侧的双箭头符号将此字段转化为动态分区。也可在动态分区字段最右侧中点击“恢复字段”将此字段恢复为普通字段。
5.点击下方“完成”,即创建任务成功,或点击“上一步”返回“读取设置”页面。
EDAP类型
选择数据集成目的端的类型为“EDAP”时,相关配置操作大部分与3.1节的配置操作类似,本小节重点说明EDAP类型相关配置操作的不同之处,其他操作可参考3.1小节。
1.在【设置同步来源与目标】时,选择目的端类型为EDAP,需指定数据库与数据表的存储路径,存储路径只有在【写入设置】中选择“自动建表”才会生效;
Doris类型
选择数据集成目的端的类型为“Doris”时,相关配置操作大部分与3.1节的配置操作类似,本小节重点说明Doris类型相关配置操作的不同之处,其他操作可参考3.1小节。
- 【数据源变化设置】中,以Doris为目的端的配置只支持“数据源删除正在同步的表”设置和“同步的表字段被删除”设置,不支持“同步的表发现新增字段”设置;
2.【写入设置】,建表方式支持自动建表/选择已有表。自动建表情况下,表的类型支持2种:Duplicate明细表和Unique唯一表。
任务运维
- 查看任务列表,可见任务名、类型、源端目的端信息等,可对任务进行运行、暂停、删除操作。点击“运行”即可开始任务,若为一次性任务则运行一次后结束,若为定时任务则开始持续运行。注意,刚创建好的任务状态为“PUBLISHED/发布”,用户可根据需求点击“运行”、“暂停”任务将状态改为“RUNNING/运行”、“SUSPEND/暂停”,若运行失败则任务状态为“FAILED/失败”,若运行成功则任务状态为“SUCCESS/成功”;
- 点击任务名称,可具体对某任务进行监控;
- 点击概览可见任务目前正在执行情况,包含读写数据量等,可单独重试失败的单表任务;
4.点击集成基本信息可查看创建任务时设置的基本信息;
5.点击读取设置或写入设置,再点击左侧库、表,可查看创建任务时读写的相关过滤配置;
- 点击右上角“编辑”可编辑作业配置,值得注意的是,更新作业配置时任务的状态需要提前“暂停”,失败或者正在运行等状态的任务无法编辑。