Flink-DataWorks第三部分:数据集成(第59天)

系列文章目录

2.4 任务配置方式

2.4.1 DataStudio侧离线同步

2.4.1.1 开发流程概览

2.4.1.2 步骤一:新建离线同步节点

2.4.1.3 步骤二:配置同步网络链接

2.4.1.4 步骤三:配置数据来源与去向

2.4.1.5 步骤四:配置字段映射关系

2.4.1.7 步骤六:配置调度属性

2.4.1.8 步骤七:提交并发布任务

文章目录

  • 系列文章目录
  • 前言
    • 2.4 任务配置方式
      • 2.4.1 DataStudio侧离线同步
        • 2.4.1.1 开发流程概览
        • 2.4.1.2 步骤一:新建离线同步节点
        • 2.4.1.3 步骤二:配置同步网络链接
        • 2.4.1.4 步骤三:配置数据来源与去向
        • 2.4.1.5 步骤四:配置字段映射关系
        • 2.4.1.7 步骤六:配置调度属性
        • 2.4.1.8 步骤七:提交并发布任务

前言

本文主要详解了DataWorks的数据开发流程及操作,为第三部分:

由于篇幅过长,分章节进行发布。

后续:

 运维中心的使用

2.4 任务配置方式

2.4.1 DataStudio侧离线同步

数据集成的离线同步功能为用户提供数据读取(Reader)和写入插件(Writer),方便用户通过定义来源与去向数据源,并结合DataWorks调度参数使用,将源端数据库中全量或增量数据的同步至目标数据库中。

可以通过向导模式和脚本模式两种方式类配置离线同步任务。基于易用性考虑,下面介绍第一种方式。

2.4.1.1 开发流程概览

步骤一:新建离线同步节点

步骤二:配置同步网络链接

步骤三:配置数据来源与去向

步骤四:配置字段映射关系

步骤五:配置通道

步骤六:配置调度属性

步骤七:提交并发布任务

2.4.1.2 步骤一:新建离线同步节点

1)登录DataWorks控制台,单击左侧导航栏的数据建模与开发 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发。

2)创建业务流程。在业务流程处右键,点击新建业务流程。

在对话框中填写业务名称为 test。

3)创建离线同步节点。

可以通过以下两种方式创建离线同步节点:

方式一:展开业务流程,右键单击数据集成 > 新建节点 > 离线同步。

方式二:双击业务流程名称,将数据集成目录下的离线同步节点直接拖拽至右侧业务流程编辑面板。

填写节点名称为batch_data_integration

2.4.1.3 步骤二:配置同步网络链接

选择离线同步任务的数据来源和数据去向,以及用于执行同步任务的资源组,并测试连通性。其中数据来源选择MySQL,数据源名称选择rdsmysql;数据集成选择hmcx;数据去向选择MaxCompute,数据源名称选择odps_first。连通性没问题后点击下一步。

 还支持同步源端分库分表数据至目标单表,详情请参见:场景:配置分库分表离线同步任务。

 若数据源与资源组网络不通,请参考界面提示或文档进行网络连通配置。详情请参见:配置资源组与网络连通。

2.4.1.4 步骤三:配置数据来源与去向

1)在MySQL中建表并导入数据

create database if not exists test default character set = utf8 collate = utf8_general_ci;

create table test.student_list

(
s_id varchar(20),
s_name varchar(20) not null default '',
s_birth varchar(20) not null default '',
s_sex varchar(10) not null default '',

primary key (s_id)

);

-- 插入测试数据

insert into test.student_list values ('01', '赵雷', '1990-01-01', '男');

insert into test.student_list values ('02', '钱电', '1990-12-21', '男');

insert into test.student_list values ('03', '孙风', '1990-05-20', '男');

insert into test.student_list values ('04', '李云', '1990-08-06', '男');

insert into test.student_list values ('05', '周梅', '1991-12-01', '女');

insert into test.student_list values ('06', '吴兰', '1992-03-01', '女');

insert into test.student_list values ('07', '郑竹', '1989-07-01', '女');

insert into test.student_list values ('08', '王菊', '1990-01-20', '女');

2)在DataStudio中点击临时查询,新建ODPS SQL

路径为临时查询,名称为test

在test中执行odps建表语句

create table student_list

(

s_id string,

s_name string,

s_birth string,

s_sex string

)

3)返回数据集成任务,根据提示,配置数据来源和去向,如果有不清楚的,可以点击配置文档进行查询。

数据来源,表选择student_list【如果没有则刷新页面再试一下】

数据集过滤中可以填写一些条件,将不需要的数据过滤掉

切分键可以将源数据表中某一列作为切分键,建议使用主键或有索引的列作为切分键

数据去向,表选择student_list

写入模式有两种,insert into:直接向表或静态分区中插入数据,insert overwrite:先清空表中的原有数据,再向表或静态分区中插入数据。这里选择insert overwrite。

空字符串转为Null写入:源头数据是空字符串,在向目标MaxCompute列写入时是否转为Null值写入。这里选择否。

2.4.1.5 步骤四:配置字段映射关系

选择数据来源和数据去向后,需要指定读取端和写入端列的映射关系,配置字段映射关系后,任务将根据字段映射关系,将源端字段写入目标端对应类型的字段中。

支持同名映射、同行映射。在使用过程中,还可以:

 为目标字段赋值:通过添加一行的方式,为目标表添加常量、变量。例如,'123','${变量名}'。

注意:在此处定义的变量,当单击下一步,配置调度时,可以为变量赋值。

 编辑源端字段:可以通过单击类型右侧的编辑图标实现如下功能:

 使用源端数据库支持的函数,对字段进行函数处理,例如,通过Max(id)控制仅同步最大值。

 在字段映射未拉取全部字段的情况下,手动编辑源端字段。

注意:MaxCompute Reader暂不支持使用函数。

2.4.1.6 步骤五:配置通道

通过通道配置,控制数据同步过程相关属性。

1)任务期望最大并发数:用于定义当前任务从源端并行读取或并行写入目标端的最大线程数。

2)同步速率:限流------可以通过限流控制同步速率,以保护读取端数据库,避免抽取速度过大,给源库造成太大的压力。限速最小配置为1MB/S。

不限流------在不限流的情况下,任务将在所配置的并发数的限制基础上,提供现有硬件环境下最大的传输性能。

3)错误记录数控制(脏数据控制):用于定义脏数据阈值,及对任务的影响。这里选择不容忍脏数据。

• 不配置时默认允许脏数据,即任务产生脏数据时不影响任务执行。

• 配置为0,表示不允许脏数据存在。如果同步过程中产生脏数据,任务将失败退出。

• 允许脏数据并设置其阈值时:

o 若产生的脏数据在阈值范围内,同步任务将忽略脏数据(即不会写入目标端),并正常执行。

o 若产生的脏数据超出阈值范围,同步任务将失败退出。

4)分布式处理能力:用于控制是否开启分布式模式来执行当前任务。

 开启:分布式执行模式可以将用户的任务切片分散到多台执行节点上并发执行,进而做到同步速度随执行集群规模做水平扩展,突破单机执行瓶颈。

 未开启:配置的并发数据仅仅是单机上的进程并发,无法利用多机联合计算。

注意:

 如果对于同步性能有比较高的诉求可以使用分布式模式。 另外分布式模式也可以使用机器的碎片资源,对资源利用率友好。

 如果独享资源组只有1台机器,不建议使用分布式,因为无法利用多机资源能力。

 如果单机已经满足速度需要,建议优选单机模式,简化任务执行模式。

 并发数大于等于8个才能开启分布式处理能力。

2.4.1.7 步骤六:配置调度属性

周期性调度的离线同步任务需要配置任务自动调度时的相关属性。单击右侧的调度配置,分别配置以下几项。

(1)配置节点调度属性:用于为任务配置阶段使用的变量赋值调度参数,用户在上述配置中定义的变量均可以在此处进行赋值,支持赋值常量与变量。

关于参数配置:

调度参数通常会被用于指代某些动态时间的场景,此场景下,可基于业务日期和定时时间进行调度参数的取值设置。概念区分如下:

调度参数支持的格式如下:

注意事项:
... 参 数 相 关 。 取 N 年 前 、 N 月 前 的 时 间 数 据 需 使 用 {...}参数相关。 取N年前、N月前的时间数据需使用 ...参数相关。取N年前、N月前的时间数据需使用{...}参数。

 ... 参 数 只 能 精 确 到 年 月 日 , 因 此 {...}参数只能精确到年月日,因此 ...参数只能精确到年月日,因此{...}参数不支持KaTeX parse error: Unexpected character: '' at position 22: ...mm-dd-1/24}用法。 ̲ 如需对年份、月份进行计算,建...{...}参数。例如, y y y y − N 、 {yyyy-N}、 yyyy−N、{mm-N}。
KaTeX parse error: Unexpected character: '' at position 10: [...]参数相关。 ̲ 取N小时前、N分钟前的时间数...[...]参数。

 [ ... ] 参 数 基 于 时 分 秒 进 行 替 换 , 无 法 根 据 [...]参数基于时分秒进行替换,无法根据 [...]参数基于时分秒进行替换,无法根据[yyyy-N]、 [ m m − N ] 时 间 格 式 获 取 多 少 年 前 、 多 少 月 前 的 时 间 数 据 。 单 独 取 年 份 、 月 份 , 请 使 用 [mm-N]时间格式获取多少年前、多少月前的时间数据。单独取年份、月份,请使用 [mm−N]时间格式获取多少年前、多少月前的时间数据。单独取年份、月份,请使用{...}参数。

 如需获取精确到秒的时间数据时,建议使用 [ ... ] 参 数 。 例 如 , [...]参数。例如, [...]参数。例如,[yyyy-mm-dd-1-1/24]。

 $[...]调度参数替换值不随实例实际运行时间改变。

$[...]根据实例定时时间取值,调度参数替换值在实例生成时已确定,因此调度参数的替换值不会随着实例实际运行时间而改变。

(2)配置时间属性:用于定义任务在生产环境的周期调度方式。用户可以在调度配置的时间属性区域,配置任务生成周期实例的方式、调度类型、调度周期等属性。

配置如下:

1)实例生成方式

2)调度类型

DataWorks支持的调度类型如下表所示。

空跑表现如下:

 系统直接返回运行成功,即执行时长为0秒。

 不会真正执行任务,即执行日志为空。

 不会阻塞依赖当前节点的下游节点执行,即下游节点正常执行。

 不会占用资源。

3)调度日历

用于定义任务的调度日期与调度方式,DataWorks支持如下两种日历:

 默认日历:平台提供,适用于通用场景。

 自定义调度日历:用户自定义,适用于有灵活调度日期需求的行业及场景(例如,金融行业)。可根据需要配置日历所应用的工作空间、日历的有效期、指定日期任务的调度方式等规则,详情请参见配置调度日历。

4)调度周期

调度周期即任务在调度场景下自动执行的周期数,用于定义在生产环境调度系统中,多久会真实执行一次节点中的代码逻辑。调度任务会根据调度类型及周期数生成相应的周期实例(例如,小时调度任务每天会根据周期数产生相应数量的小时实例),通过周期实例的方式自动调度运行周期任务。DataWorks支持的调度类型如下:

注意:

①任务调度频率与上游任务周期无关

任务多久调度一次与任务本身定义的调度周期有关,与上游任务调度周期无关。

②DataWorks支持不同调度周期的任务互相依赖

DataWorks中,调度任务会根据调度类型及周期数生成相应的周期实例(例如,小时调度任务每天会根据周期数产生相应数量的小时实例),通过实例的方式运行任务。周期任务设置的依赖关系,其本质是任务间所生成实例的依赖。上下游任务的调度类型不同,其生成的周期实例数及实例的依赖情况不同。

③非调度时间任务会空跑

DataWorks上非每天调度的任务(例如周、月调度的任务)在非调度时间内会空跑,当到达任务定义的调度时间后立即返回成功状态。若下游存在日调度任务,会调起该下游日调度任务正常执行。即上游空跑,下游调度任务正常根据节点定义的调度时间执行。

④任务执行时间说明

此处仅设置任务预期调度时间,任务的实际执行时间受多因素影响。例如,上游定时时间、任务执行资源情况、任务实际运行条件等。

5)超时定义

设置超时时间后,如果任务运行时长超过超时时间,任务将自动终止运行。其配置说明如下:

 超时时间对周期实例、补数据实例、测试实例均生效。

 超时时间默认值为3~7天,系统根据实际负载情况动态调整默认的任务超时时间,范围为3~7天不等。

 手动设定超时时间时,最大值可设置为168小时(7天)。

6)重跑说明

可在时间属性中配置节点在特定情况下重跑,以及指定重跑时间及次数。

注意:使用重跑属性时,应尽量保证任务的幂等性(特殊任务除外),避免在任务出错重跑后,出现大量数据质量问题。例如,在ODPS SQL的开发过程中,使用insert overwrite语句来替代insert into语句。

①重跑属性

重跑属性不能为空,其支持的类型及应用场景如下表所示。

②出错自动重跑

注意:

 当重跑属性设置为运行成功或失败后皆不可重跑时,则不会显示出错自动重跑属性,即任务出错不会自动重跑。

 任务执行时,超过了超时时间导致的节点失败,自动重跑配置将不生效。

7)生效日期

调度节点在有效日期内生效并自动调度,超过有效期的任务将不会自动调度。此类任务为过期任务,用户可在运维大屏查看过期任务数量,并根据情况对其做下线等处理。

(3)配置资源属性:用于定义调度场景下,将当前任务下发至数据集成任务执行资源时所使用的调度资源组,用户可以在调度配置的资源属性区域,选择任务调度运行时需要使用的资源组。

(4)配置调度依赖

DataWorks上任务的调度依赖是指调度场景下节点间的上下游依赖关系。在DataWorks中,上游节点任务运行完成且运行成功,下游节点任务才会开始运行。配置调度依赖后,可保障调度任务在运行时能获取到正确的数据(即当前节点依赖的上游节点成功运行后,DataWorks通过节点的运行状态识别到上游表的最新数据已产生,下游节点再去取数),避免下游节点取数据时,上游表数据还未正常产出,导致下游节点取数出现问题。

注意:任务实际运行时间除了取决于任务本身的定时时间(即任务在调度场景下的预期执行时间)外,还取决于上游任务的完成时间(即下游任务实际执行时间还取决于上游任务的定时时间)。若上游任务未完成运行,即便下游任务的定时时间早于上游任务,下游任务也不会运行。

因为这个是一个数据同步任务,所以不存在数据血缘,直接依赖流程的起始节点或者根节点即可。这里勾选使用工作空间根节点。

2.4.1.8 步骤七:提交并发布任务

若任务需要进行周期性调度运行,则需要将任务发布至生产环境。这里先进行保存即可。

然后进行测试。

运行成功后,可以查询一下数据。

在test节点,进行查询。

select * from student_list;

可见数据已经成功从mysql导入到了maxcompute。

相关推荐
Dreams°1232 小时前
大数据 ETL + Flume 数据清洗 — 详细教程及实例(附常见问题及解决方案)
大数据·单元测试·可用性测试
静听山水2 小时前
Flink处理无界数据流
flink
sf_www2 小时前
Flink on YARN是如何确定TaskManager个数的
大数据·flink
静听山水2 小时前
Flink API 的层次结构
flink
武子康4 小时前
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
大数据·人工智能·python·机器学习·数据挖掘·scikit-learn·kmeans
武子康4 小时前
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
大数据·人工智能·python·深度学习·算法·机器学习·数据挖掘
Aloudata5 小时前
NoETL自动化指标平台为数据分析提质增效,驱动业务决策
大数据·数据分析·指标平台·指标体系
2401_883041088 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
青云交9 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:融合机器学习的未来之路(上 (2-1))(11/30)
大数据·计算资源·应用案例·数据交互·impala 性能优化·机器学习融合·行业拓展
Json_1817901448011 小时前
An In-depth Look into the 1688 Product Details Data API Interface
大数据·json