本文以使用MaxCompute计算引擎,在DataWorks上运行MaxCompute作业任务为例,为您介绍开发人员如何使用数据开发(DataStudio)创建一个周期调度任务,帮助您快速了解数据开发(DataStudio)模块的基本使用。
前提条件
已完成开发前的环境准备,详情请参见DataWorks准备工作流程。- 本文以创建ODPS SQL任务为例,因此,工作空间需绑定MaxCompute类型引擎。
- 操作账号需拥有开发权限,即阿里云主账号,或拥有空间管理员、开发角色权限的RAM用户。
背景信息
DataWorks的数据开发(DataStudio)面向各引擎(MaxCompute、Hologres、EMR、CDH等)提供可视化开发界面,包括智能代码开发、数据清洗加工、规范化任务开发与发布等,保证数据开发的高效与稳定。更多数据开发模块的使用,详情请参见数据开发概述。
- 在DataWorks创建多个数据表。例如:
- 源表:存储从其他数据源同步过来的数据。
- 结果表:存储经DataWorks清洗加工过的数据。
- 创建同步任务,将业务数据同步至上述源表。
- 创建计算节点,对同步任务产出的表数据进行清洗、逐层加工,并将每层结果写入对应结果表。
进入数据开发
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的数据开发。
操作流程
- 步骤一:新建业务流程
数据开发基于业务流程组织与开发代码,您需要先新建业务流程,才可进行后续的开发工作。
- 步骤二:新建表
DataWorks支持使用可视化方式创建表,并以目录结构方式在界面展示。数据开发前,您需先在引擎创建用于接收数据清洗结果的表。
- 步骤三:新建节点
DataWorks基于节点进行任务开发,不同类型的引擎任务在DataWorks上被封装为不同类型的节点。您可根据业务需要,选择合适的节点进行引擎任务开发。
- 步骤四:编辑节点
根据节点类型,在节点编辑页面通过对应数据库的语法编写业务代码。
- 步骤五:定义节点调度属性
用于定义该节点的调度相关属性,周期性调度运行节点。
- 步骤六:调试代码
您可使用DataWorks提供的代码片段快捷运行、运行、高级运行三种方式调试代码,验证代码逻辑是否正确。
- 步骤七:保存并提交节点
节点调试无误后,您需要保存并提交节点。
- 步骤八:冒烟测试
为保障生产任务高效运行,避免计算资源浪费。任务发布上线前,您可将任务提交至开发环境进行冒烟测试,保障任务的正确性。
- 步骤九:发布任务
DataWorks仅支持自动调度发布至生产环境的任务,因此在冒烟测试无误后,您需将任务发布至生产环境调度系统进行周期调度。
步骤一:新建业务流程
DataWorks以业务流程为中心组织数据开发,通过各类型开发节点的容器看板,将相关工具、优化及管理操作围绕看板对象进行组织,使开发管理更加方便智能。您可根据业务需求,将同类型业务统一放置一个业务流程。
步骤二:新建表
DataWorks的数据开发节点会对您的源数据进行清洗加工,因此,您需先在引擎创建用于接收数据清洗结果的表,并定义表结构。- 创建表。
- 在步骤一创建的业务流程中,展开子目录,右键单击新建表。 ,选择
- 配置表名称、引擎实例等信息。
- 配置表结构。进入表编辑页面,切换至DDL模式,通过DDL语句配置表结构。生成表结构后,在基本属性区域输入表的中文名,并分别单击工具栏的提交到开发环境和提交到生产环境提交表。说明 您也可以使用可视化方式,根据业务需求及界面引导配置所需表结构。可视化建表,详情请参见创建并使用MaxCompute表。
生成bank_data表结构的参考语句如下。
生成result_table表结构的参考语句如下。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 '是否有定期存款' );
CREATE TABLE IF NOT EXISTS result_table ( education STRING COMMENT '教育程度', num BIGINT COMMENT '人数' ) PARTITIONED BY ( day STRING, hour STRING );
- 上传数据。将原始业务数据存储至DataWorks的表(本文示例为
bank_data
表)中。本文示例采用直接上传方式,导入本地文件banking.txt至DataWorks,通过上传数据模拟实际数据写入情况。操作图示如下。更多上传数据内容,请参考本地数据上传至bank_data。
步骤三:新建节点
- 创建节点。您可通过如下两种方式创建:
- 方式一:基于目录树创建
- 在目录树的业务流程中找到步骤一创建的业务流程。
- 右键单击所需引擎,在新建节点下选择合适节点。
- 方式二:基于业务流程面板创建
- 在目录树的业务流程中找到步骤一创建的业务流程。
- 双击该业务流程,进入业务流程面板。
- 在面板左侧导航栏单击所需节点,或将所需节点拖拽至面板。
- 方式一:基于目录树创建
- 配置节点引擎实例、名称等信息。本文示例创建名为
result_table
(与步骤二创建的结果表名称相同)的ODPS SQL节点。说明 使用DataWorks节点进行数据开发时,通过开发节点清洗数据,再将清洗结果存放至结果表。建议您将结果表名称作为节点的名称,以便快速定位该节点产出的表数据。
步骤四:编辑节点
在业务流程目录树或业务流程面板中找到步骤三创建的节点,双击进入节点编辑页面。根据节点类型,通过对应数据库的语法编写业务代码。
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 bank_data
GROUP BY education;
步骤五:定义节点调度属性
参数 | 描述 |
---|---|
基础属性 | 节点的名称、ID、类型、责任人会自动展示,此处无需单独配置。 说明
|
参数 | 用于定义节点调度时使用的参数。 DataWorks提供内置参数及相关自定义参数,可供任务调度时实现参数动态赋值。若步骤四编辑代码时定义了变量,您可在此处对该变量进行赋值。 本文示例为步骤四的如下变量赋值,用于将 bank_data 表中业务时间(即昨天)对应的小时数据写入result_table 对应的小时分区:
![]() |
时间属性 | 通过调度配置的时间属性,配置节点生成周期实例的方式,实例调度周期与执行时间,是否支持重跑,任务执行超过多长时间自动退出等。 说明
本文示例设置 result_table 节点00:00 开始运行,每小时调度一次,即每小时将bank_data 表中业务时间(即昨天)对应的小时数据写入result_table 表对应的小时分区中。![]() |
资源属性 | 用于配置任务发布至生产调度时使用的调度资源组。本文示例使用开通DataWorks时默认提供的公共调度资源组。 说明 在任务高并发执行且无法错峰运行的情况下,需要专有的计算资源来保障任务定时被调度运行时,建议您选择购买使用DataWorks的独享调度资源组。详情请参见独享调度资源组。 |
调度依赖 | 用于定义节点调度的上下游依赖关系。建议您根据血缘关系来设置节点依赖,通过上游任务执行成功来确定当前节点依赖的表数据已顺利产出,当前节点可正常查询该上游表数据。 说明
result_table 节点查询的bank_data 表为非当前业务流程产出的表数据,则需将工作空间根节点配置为result_table 节点依赖的上游节点,由根节点调度result_table 节点运行。 |
(可选)节点上下文 | 用于定义节点上下游间的参数传递,实现下游节点通过参数获取上游节点传递过来的取值。 |
步骤六:调试代码
方式 | 使用说明 | 选择建议 |
---|---|---|
代码行:快捷运行 | 用于快速运行选中的代码片段。 | 需要快捷运行代码片段时,可选择此方式。 |
工具栏:运行(![]() | 支持为代码指定测试场景下的变量赋值常量。 说明 新建的节点第一次单击运行时,需要您在弹框中手动为代码中变量赋值常量,此次赋值会被记录,下次操作无需再重复赋值。 | 若您需要频繁调试全量代码,可选择此方式。 |
工具栏:高级运行(![]() | 每次单击此按钮都需为指定测试场景下的变量赋值常量。 | 若您需要修改代码中的变量赋值,可选择此方式。 |
2022.09.07 14:00
的运行结果。
步骤七:保存并提交节点
- 单击工具栏的
图标,保存节点配置。
- 单击工具栏的
图标,提交节点至开发环境。
步骤八:冒烟测试
- 单击工具栏中的
图标,在冒烟测试弹框配置业务日期。
- 冒烟测试执行完成后,单击工具栏的
图标,查看测试结果。
result_table
调度节点00:00
到23:59
每小时执行一次,因此下图配置中将生成两个小时实例,实例定时运行时间分别为00:00
、01:00
。- 实例是周期任务根据调度周期运行时生成的任务快照。
- 由于
result_table
节点设置为小时调度任务,除配置冒烟测试的业务日期外,您还需选择运行哪一时间段的实例。 - 更多冒烟测试介绍,详情请参见执行冒烟测试。

步骤九:发布任务
- DataWorks仅支持自动调度发布生产环境的任务。因此,在冒烟测试无误后,您需将任务发布至生产环境调度系统进行周期调度。
- 关于简单模式与标准模式工作空间的说明,详情请参见必读:简单模式和标准模式的区别。
在标准模式工作空间下,数据开发(DataStudio)界面提交的操作(包括数据开发节点、资源、函数的新增、更新、删除等)都将进入任务发布界面等待发布。您需进入发布任务。
将相关操作通过发布流程发布至生产环境,发布后才可生效。发布详情请参见发布相关 | 说明 |
---|---|
发布流程管控 | 发布操作受角色权限和流程控制约束,执行发布操作后请确保发布包状态为成功。 说明
|
发布生效时间控制 | 全量转实例时间(23:30 ~24:00 )执行的发布操作第三天周期实例才会生效。 |