最佳实践案例
最佳实践案例
1 单个任务创建
案例 | 源端 | 源端条件 | 目标端 | 目标端结构 | 其他 |
---|---|---|---|---|---|
全量抽取写入Hive | MySQL(单表) | 无 | Hive | 非分区表 | 需要说明insert into和overwrite效果区别 |
全量抽取写入Hive分区 | MySQL(单表) | 无 | Hive | 分区表 | 每天生成分区,写入当天的分区 |
流水抽取MySQL中数据 | MySQL(单表) | 主键 | Hive | 分区表 | MySQL表中存在单调递增的主键 |
增量抽取MySQL中数据 | MySQL(单表) | 时间等于昨天全天 | Hive | 分区表 | |
分库分表抽取MySQL中数据 | MySQL(多表) | 无 | Hive | 分区表 |
案例一:全量抽取写入Hive
在数据来源中选择数据源、数据库表,在数据去向中选择数据库表即可。
特别说明:若Hive库下没有合适的存储表,数据传输服务支持快速创建表,点击 快速创建表 后,平台基于来源表的字段内容自动生成DDL语言(在对应库下快速新建表,前提是对该库有创建表的权限,可在 项目配置-权限管理-数据权限,查看对应库下,当前用户对应的角色是否有创建表的权限)。
案例二:全量抽取写入Hive分区
在数据来源与去向-数据去向的分区栏中,静态分区输入${azkaban.flow.current.date},则“离线开发”调度该数据同步任务后,可以实现每天全量抽取数据来源表写入Hive表当天的分区。注意,数据去向表为分区表是数据可写入表分区的前提条件。
特殊说明:动态分区值支持设置为数据来源表字段或来源数据源支持的系统函数
案例三:流水抽取MySQL中数据
在数据来源与去向-数据来源的导出方式中,选择导出方式为“流水型”,选择字段栏下拉选择主键(此处为rel_status)并选择起始值(此处为10),则从选择字段的起始值开始读取数据,读取到最新记录位置,下次调度任务时从上次的最新记录读取至当前的最新记录。注意,MySQL表中存在单调递增的主键是实现流水型导出的前提。
案例四:增量抽取MySQL中数据
数据来源:导出方式为“常规型”,在过滤条件栏输入where过滤语句:“create_time>${azkaban.flow.1.days.ago} and create_time<${azkaban.flow.current.date}
数据去向:分区栏设置静态分区:${azkaban.flow.1.days.ago}
即可实现每天增量抽取MySQL昨天全天的数据,并写入Hive表昨天对应的分区
案例五:分库分表抽取MySQL中数据
点击“跨库表”选择跨库的多张表,支持抽取分库分表数据写入同一张表
说明:MySQL、Oracle、SqlServer支持数据源内分库分表功能(抽取数据源内跨库表)。
2 模板化任务配置指南
1.功能说明
通过自定义数据同步节点的属性,支持替换数据传输任务源端或目标端的数据源、数据库、数据表,实现模板化配置任务的目的。
2.操作流程
步骤1:“离线开发”模块中创建任务→从页面右侧把数据同步节点拖拽到画布中→双击节点→选择数据传输任务。
步骤2:复制数据同步节点,对节点添加自定义属性,可通过如下三种方式的任一方式实现:
1.双击数据同步节点→点击【添加】按钮。
2.勾选数据同步节点→点击【设置并运行】按钮→在运行设置弹窗中展开高级设置→点击自定义属性栏的【添加】按钮。
3.进入线上模式(任务提交上线才可进入线上模式)→点击【编辑调度】按钮→点击开关选择数据同步节点→点击【设置并提交调度按钮】→在编辑调度弹窗下拉至执行设置模块→点击自定义属性栏的【添加】按钮。
步骤3:填入自定义属性的属性和值。如填写属性:ndi.sourceDSID,值:2308,则该数据同步节点数据传输调度的数据来源更改为ID为2308的数据源,抽取该数据源中与原数据库名、数据表名相同的数据表。
|属性|值|
|—|—|
|ndi.sourceDSID|源端数据源ID|
|ndi.sourceDBName|源端数据库名称|
|ndi.sourceTableName|源端数据表名称|
|ndi.targetDSID|目标端数据源ID|
|ndi.targetDBName|目标端数据库名称|
|ndi.targetTableName|目标端数据表名称|
以上内容对您是否有帮助?