系列文章目录
- 数据开发 3.1 概览 3.1.1 进入数据开发 3.1.2 任务开发流程 3.1.3 任务组织与管理方式 3.2 操作流程 3.2.1 开发流程概览 3.2.2 步骤一:新建表 3.2.3 步骤二:新建节点 3.2.5 步骤四:定义节点调度属性 3.2.6 步骤五:调试代码 3.2.7 步骤六:保存并提交节点 3.2.9 步骤八:发布任务
文章目录
前言
本文主要详解了DataWorks的数据开发(后续),为第五部分:
由于篇幅过长,分章节进行发布。
后续:
数据运维
3. 数据开发
3.1 概览
DataWorks数据开发(DataStudio)模块用于定义周期调度任务的开发及调度属性,与运维中心配合使用,面向各引擎(MaxCompute、Hologres、EMR等)提供可视化开发主界面,支持智能代码开发、多引擎混编工作流、规范化任务发布等能力,帮助用户轻松构建离线数仓、实时数仓与即席分析系统,保证数据生产的高效稳定。
3.1.1 进入数据开发
方法一:
登录DataWorks控制台,单击左侧导航栏的数据建模与开发 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发。
方法二:
登录DataWorks控制台,单击工作空间列表,点击对应的工作空间,然后点击数据开发。
3.1.2 任务开发流程
DataWorks的工作空间分为标准模式和简单模式,工作中大部分使用标准模式,对应的开发流程如下:
3.1.3 任务组织与管理方式
业务流程的呈现包括目录树及操作面板两种方式,帮助用户基于业务视角组织代码,使得资源类别更明确,业务逻辑更清晰。
目录树结构:提供基于任务类型的代码组织方式。
业务流程面板:提供流程化的业务逻辑展现方式。
在这里插入图片描述
3.2 操作流程
3.2.1 开发流程概览
步骤一:新建表
DataWorks支持使用可视化方式创建表,并以目录结构方式在界面展示。数据开发前,用户需先在引擎创建用于接收数据清洗结果的表。
步骤二:新建节点
DataWorks基于节点进行任务开发,不同类型的引擎任务在DataWorks上被封装为不同类型的节点。用户可根据业务需要,选择合适的节点进行引擎任务开发。
步骤三:编辑节点
根据节点类型,在节点编辑页面通过对应数据库的语法编写业务代码。
步骤四:定义节点调度属性
用于定义该节点的调度相关属性,周期性调度运行节点。
步骤五:调试代码
可使用DataWorks提供的代码片段快捷运行、运行、高级运行三种方式调试代码,验证代码逻辑是否正确。
步骤六:保存并提交节点
节点调试无误后,需要保存并提交节点。
步骤七:冒烟测试
为保障生产任务高效运行,避免计算资源浪费。任务发布上线前,用户可将任务提交至开发环境进行冒烟测试,保障任务的正确性。
步骤八:发布任务
DataWorks仅支持自动调度发布至生产环境的任务,因此在冒烟测试无误后,需将任务发布至生产环境调度系统进行周期调度。
3.2.2 步骤一:新建表
(1)创建表。
1)在test业务流程中,展开子目录,右键单击MaxCompute > 表,选择新建表。
2)配置表名称、引擎实例等信息。
本文示例分别创建如下两种表。
(2)配置表结构
进入表编辑页面,切换至DDL模式,通过DDL语句配置表结构。生成表结构后,在基本属性区域输入表的中文名,并将其提交至开发环境与生产环境,提交成功后可在对应环境的引擎项目查看该表。
生成bank_data表结构的参考语句如下。
CREATE TABLE IF NOT EXISTS bank_data
(
age BIGINT COMMENT '年龄',
job STRING COMMENT '工作类型',
marital STRING COMMENT '婚否',
education STRING COMMENT '教育程度',
default STRING COMMENT '是否有信用卡',
housing STRING COMMENT '房贷',
loan STRING COMMENT '贷款',
contact STRING COMMENT '联系途径',
month STRING COMMENT '月份',
day_of_week STRING COMMENT '星期几',
duration STRING COMMENT '持续时间',
campaign BIGINT COMMENT '本次活动联系的次数',
pdays DOUBLE COMMENT '与上一次联系的时间间隔',
previous DOUBLE COMMENT '之前与客户联系的次数',
poutcome STRING COMMENT '之前市场活动的结果',
emp_var_rate DOUBLE COMMENT '就业变化速率',
cons_price_idx DOUBLE COMMENT '消费者物价指数',
cons_conf_idx DOUBLE COMMENT '消费者信心指数',
euribor3m DOUBLE COMMENT '欧元存款利率',
nr_employed DOUBLE COMMENT '职工人数',
y BIGINT COMMENT '是否有定期存款'
);
生成result_table表结构的参考语句如下。
CREATE TABLE IF NOT EXISTS result_table
(
education STRING COMMENT '教育程度',
num BIGINT COMMENT '人数'
)
PARTITIONED BY
(
day STRING,
hour STRING
);
(3)上传数据
将原始业务数据存储至DataWorks的表(本文示例为bank_data表)中。本文示例采用直接上传方式,导入本地文件banking.txt至DataWorks,通过上传数据模拟实际数据写入情况。操作图示如下。
文件如下(需右键复制到本地,然后再上传):
3.2.3 步骤二:新建节点
根据业务需求,选择合适的节点类型进行开发。
可以通过以下两种方式创建计算节点:
方式一:展开业务流程,右键单击MaxCompute > 新建节点 > ODPS SQL。
方式二:双击业务流程名称,将MaxCompute目录下的ODPS SQL节点直接拖拽至右侧业务流程编辑面板。
填写节点名称为result_table(与步骤一创建的结果表名称相同)
3.2.4 步骤三:编辑节点
双击进入节点编辑页面,编写业务代码。
本文示例在result_table节点中,将bank_data表中指定分区的数据写入result_table表对应的分区中,并通过变量(day、hour)定义写入的分区。
注意:
代码开发过程中,若需使用变量动态替换调度场景下的参数,可在代码中使用${自定义变量名}方式先定义变量,并在定义节点配置调度属性时为该变量赋值。
代码参考如下:
insert overwrite table result_table partition (day ='${day}', hour ='${hour}')
select education
, count(marital) as num
from dwhmcx_dev.bank_data
group by education;
其中
d
a
y
和
{day}和
day和{hour}则为定义的参数。
3.2.5 步骤四:定义节点调度属性
同2.4.1.7
参数名和参数值设置如下:
day赋值
y
y
y
y
m
m
d
d
;
h
o
u
r
赋值
{yyyymmdd};hour赋值
yyyymmdd;hour赋值[hh24]。
时间属性设置如下:
调度依赖
在这里需要系统学习一下如何配置依赖——调度依赖配置指引:
DataWorks任务依赖最终是为了保障下游取数无误,实际是上下游表数据的血缘依赖。用户可根据业务需求,选择是否需要基于表的血缘关系配置调度依赖。节点的调度依赖配置流程如下。
方式一:自定义依赖关系
若DataWorks上任务间不存在强血缘依赖(例如,不强依赖上游某个分区数据,仅取上游当前时间点最大分区数据),或依赖的数据非周期调度节点产出的表数据(例如,本地上传的表数据),则用户可自定义节点的依赖关系。自定义依赖配置具体如下:
依赖工作空间根节点
例如,同步任务中的上游数据来源于其他业务数据库,SQL类型任务对实时同步任务产出的表数据进行加工等场景,用户可直接选择挂载依赖至工作空间根节点下。
依赖虚拟节点
当工作空间中业务流程较多或较复杂时,用户可通过虚拟节点管理该业务流程,将需要统一管控的节点挂载依赖至某虚拟节点,使工作空间下数据流转路径更加清晰。例如,控制业务流程整体调度时间、控制业务流程整体调度与冻结(即不调度)。
方式二:基于血缘配置依赖关系
由于节点依赖关系配置后,默认节点的上下游产出表存在强依赖关系(即下游表数据的产出需要依赖上游产出的表数据),因此,任务在配置调度依赖时,需确认是否存在强血缘依赖,即确认当前任务是否会因为上游数据未产出而导致当前任务取数出现问题。若下游节点中表数据的产出,需依赖上游节点产出的表数据,则认为上下游节点的表存在强血缘依赖关系。
也可以使用自动解析的方式,点击从代码解析输入输出即可。需要注意的是,有时候解析出来的依赖跟实际的依赖不一样,需要进行手动调整。
3.2.6 步骤五:调试代码
可使用如下方式调试代码逻辑,保障代码编写的正确性。
本文示例使用高级运行测试2023.11.08 20:00的运行结果
3.2.7 步骤六:保存并提交节点
节点配置并测试完成后,需要保存节点配置,并提交节点至开发环境。
单击工具栏的保存图标,保存节点配置。
单击工具栏的提交图标,提交节点至开发环境。
注意:如果报错“当前节点依赖的父节点输出名:dwhmcx.batch_data_integration不存在,不能提交本节点,请确保拥有该输出名的父节点:batch_data_integration已被提交!”,则需要将batch_data_data_integration提交上去。
3.2.8 步骤七:冒烟测试
为保障生产任务高效运行,避免计算资源浪费,建议在任务发布前先对任务进行冒烟测试。冒烟测试需在开发环境执行,因此需将节点提交至开发环境,提交后:
(1)单击工具栏中的 图标,在冒烟测试弹框配置业务日期。
(2)冒烟测试执行完成后,单击工具栏的 图标,查看测试结果。
本文示例测试调度参数配置是否符合预期。result_table调度节点每天执行一次,所以应该产生一个实例。
冒烟测试记录:
注意:冒烟测试不会将结果真正插入到生产表中!
3.2.9 步骤八:发布任务
因为当前工作空间为标准模式工作空间,任务提交后仅处于待发布状态,所以需参考该步骤将任务发布生产,发布后该任务才可进行周期性调度。
在标准模式工作空间下,数据开发(DataStudio)界面提交的操作(包括数据开发节点、资源、函数的新增、更新、删除等)都将进入任务发布界面等待发布。需进入任务发布 > 创建发布包将相关操作通过发布流程发布至生产环境,发布后才可生效。
点击右上方的发布
勾选相应任务,然后点击发布选中项。
发布成功后就会按照设定的调度时间进行调度。
版权归原作者 大数据飞总 所有, 如有侵权,请联系我们删除。