快速入门
入门概述
说明
- 如果您是第一次使用DataWorks,请确认已经根据准备工作模块的操作,准备好账号和工作空间角色等内容后,登录DataWorks控制台,单击相应工作空间后的进入数据开发,即可进行数据开发操作。
- 本模块的操作在标准模式的工作空间下进行。如果您使用的是简单模式的工作空间,操作步骤同标准模式。但在提交任务时,不会区分开发环境和生产环境。
通常,通过DataWorks的工作空间实现数据开发和运维包含以下操作:
1.建表并上传数据
2.创建业务流程
3.创建同步任务
4.设置周期和依赖
5.运行及排错
6.使用临时查询快速查询SQL(可选)
下图为数据开发和运维的基本流程。
建表并上传数据
以创建表bank_data和result_table为例,为您介绍如何通过DataWorks创建表并上传数据。
前提条件
您在工作空间配置页面添加MaxCompute计算引擎实例后,当前页面才会显示MaxCompute目录。详情请参见配置工作空间。
背景信息
表bank_data用于存储业务数据,表result_table用于存储数据分析后产生的结果。
创建表bank_data
1.进入数据开发页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的进入数据开发。
2.在数据开发页面,鼠标悬停至
图标,单击MaxCompute> 表。
您也可以打开相应的业务流程,右键单击MaxCompute,选择新建 > 表。
3.在新建表对话框中,输入表名为bank_data,单击提交。
注意
- 表名不能超过64个字符,且必须以字母开头,不能包含中文或特殊字符。
- 如果绑定多个实例,则需要选择MaxCompute引擎实例。
4.在表的编辑页面,单击DDL模式。
5.在DDL模式对话框中,输入如下建表语句,单击生成表结构。
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 '是否有定期存款'
);
创建表的更多SQL语法请参见创建和查看表。
6.在确认操作对话框中,单击确认。
7.生成表结构后,在基本属性模块输入表的中文名,并分别单击提交到开发环境和提交到生产环境。
说明 本示例以标准模式的工作空间为例。如果您使用的是简单模式的工作空间,仅单击提交到生产环境即可。
8.在左侧导航栏,单击表管理。
9.在表管理页面,双击打开相应的表名,查看表信息。
创建表result_table
- 在数据开发页面,鼠标悬停至 图标,单击MaxCompute> 表。您也可以打开相应的业务流程,右键单击MaxCompute,选择新建 > 表。
- 在新建表对话框中,输入表名为result_table,单击提交。
- 在DDL模式对话框中,输入如下建表语句,单击生成表结构。
CREATE TABLE IF NOT EXISTS result_table
(
education STRING COMMENT '教育程度',
num BIGINT COMMENT '人数'
);
- 在确认操作对话框中,单击确认。
- 生成表结构后,在基本属性区域输入表的中文名,并分别单击提交到开发环境和提交到生产环境。
- 在左侧导航栏,单击表管理。
- 在表管理页面,双击打开相应的表名,查看表信息。
本地数据上传至bank_data
DataWorks支持以下操作:
- 上传本地的文本文件至工作空间的表中。
- 通过数据集成模块,从多个不同的数据源导入业务数据至工作空间。
说明 本地文本文件上传的限制如下:
- 文件类型:仅支持**.txt**、.csv和**.log**类型的文件。
- 文件大小:不能超过30 MB。
- 操作对象:支持分区表导入和非分区表导入,但不支持分区值为中文。
以导入本地文件banking.txt至DataWorks为例,操作如下:
- 在数据开发页面,单击 图标。
- 在数据导入向导对话框中,至少输入3个字母来搜索需要导入数据的表,单击下一步。
- 选择数据导入方式为上传本地数据,单击选择文件后的浏览…。选择本地数据文件,配置导入信息。
- 单击下一步。
- 选择目标表字段与源字段的匹配方式,本示例选择按位置匹配。
- 单击导入数据。
创建业务流程
前提条件
开始本操作前,请确保您已经在工作空间中准备好业务数据表bank_data和其中的数据,以及结果表result_table。详情请参见建表并上传数据。
创建业务流程
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的进入数据开发。
- 在数据开发页面,鼠标悬停至 图标,单击业务流程。
- 在新建业务流程对话框中,输入业务名称和描述。
注意 业务名称必须是大小写字母、中文、数字、下划线(_)以及小数点(.),且不能超过128个字符。
- 单击新建。
创建节点并配置依赖关系
在业务流程中创建一个虚拟节点(start)和ODPS SQL节点(insert_data),并配置依赖关系为insert_data依赖于start。
注意
- 虚拟节点属于控制类型节点,在业务流程运行过程中,不会对数据产生任何影响,仅用于实现对下游节点的运维控制。
- 虚拟节点在被其它节点依赖的情况下,如果被运维人员手动设置为运行失败,则下游未运行的节点将因此无法被触发运行。在运维过程中,可以防止上游的错误数据进一步扩展。
- 业务流程中,虚拟节点的上游节点通常会被设置为工作空间根节点。工作空间根节点的格式为
。
工作空间名称_root
- DataWorks会为节点自动添加一个节点名的输出,结构为工作空间名称.节点名称。如果一个工作空间下有两个同名的节点,请修改其中一个节点的节点输出。
建议您在设计业务流程时,默认创建一个虚拟节点作为业务流程的根节点,来控制整个业务流程。设计业务流程的操作如下:
- 双击业务流程名称进入开发面板,鼠标单击虚拟节点并拖拽至右侧的开发面板。
- 在新建节点对话框中,输入节点名称为start,单击提交。
注意 节点名称必须是大小写字母、中文、数字、下划线(_)以及小数点(.),且不能超过128个字符。
- 以同样的操作新建ODPS_SQL节点,命名为insert_data。
- 通过拖拽连线,设置start节点为insert_data节点的上游节点。
配置虚拟节点的上游依赖
在业务流程中,虚拟节点通常作为整个业务流程的控制器,是业务流程中所有节点的上游节点。
通常使用工作空间根节点作为虚拟节点依赖的上游节点:
- 双击虚拟节点名称,进入节点的编辑页面。
- 单击节点编辑页面右侧的调度配置。
- 在调度依赖区域,单击使用工作空间根节点,设置虚拟节点的上游节点为工作空间根节点。
- 单击工具栏中的 图标。
编辑和运行ODPS SQL节点
本节将在ODPS_SQL节点insert_data中,通过SQL代码,查询不同学历的单身人士贷款买房的数量并保存结果,以便后续节点继续分析或展现。
-
打开ODPS SQL节点的编辑页面,输入下述代码。
具体语法说明请参见SQL概述
INSERT OVERWRITE TABLE result_table --插入数据至result_table中。 SELECT education , COUNT(marital) AS num FROM bank_data WHERE housing = 'yes' AND marital = 'single' GROUP BY education
-
右键单击代码中的bank_data,选中删除输入。
建表并上传数据中创建的bank_data表为非周期性调度产出的表,当有节点select该表数据时,需要手动删除通过select生成的自动解析配置结果(即@exclude_input=bank_data),以保障调度节点定时更新的表数据,通过节点调度依赖保障下游取数无误。
- 单击工具栏中的 图标,防止代码丢失。
- 单击
图标。
运行结束后,即可在页面下方查看运行日志和结果。
提交业务流程
- 运行并调试ODPS_SQL节点insert_data后,返回业务流程页面。
- 单击 图标。
- 在提交对话框中,选择需要提交的节点,输入备注,并选中忽略输入输出不一致的告警。
-
单击提交。
业务流程提交后,即可在业务流程下的节点列表查看节点提交状态。如果节点名称左侧存在
图标,表示该节点已提交;如果不存在 图标,表示该节点未提交。
创建同步任务
前提条件
您需要首先通过RDS创建MySQL实例,获取RDS实例ID,并在RDS控制台添加白名单。详情请参见创建RDS MySQL实例。
说明 如果是通过自定义资源组调度RDS的数据同步任务,必须把自定义资源组的机器IP也加入RDS的白名单中。
背景信息
在DataWorks中,通常通过数据集成功能,定期导入系统中产生的业务数据至工作区。SQL任务进行计算后,再定期导出计算结果至您指定的数据源中,以便进一步展示或运行使用。
目前数据集成功能支持从RDS、MySQL、SQL Server、PostgreSQL、MaxCompute、OCS、DRDS、OSS、Oracle、FTP、DM、HDFS和MongoDB等数据源中,导入数据至工作空间或从工作空间导出数据。详细的数据源类型列表请参见支持的数据源与读写插件。
新增数据源
说明 仅项目管理员角色可以新建数据源,其它角色的成员仅支持查看数据源。
- 进入数据源管理页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的进入数据集成。
- 在左侧导航栏,单击数据源,进入工作空间管理 > 数据源管理页面。
- 在数据源管理页面,单击右上角的新增数据源。
- 在新增数据源对话框中,选择数据源类型为MySQL。
-
在新增MySQL数据源对话框,配置各项参数。
此处以创建阿里云实例模式类型为例。
-
在数据集成页签下,单击相应资源组后的测试连通性。
数据同步时,一个任务只能使用一种资源组。您需要测试每种资源组的连通性,以保证同步任务使用的数据集成资源组能够与数据源连通,否则将无法正常执行数据同步任务。如果您需要同时测试多种资源组,请选中相应资源组后,单击批量测试连通性。详情请参见数据源测试连通性。
- 测试连通性通过后,单击完成。
确认作为目标的MySQL数据库中有表
在MySQL数据库中创建表odps_result
CREATE TABLE `ODPS_RESULT` (
`education` varchar(255) NULL ,
`num` int(10) NULL
);
建表完成后,您可以执行
desc odps_result;
语句,查看表详情。
新建并配置同步节点
本节将新建一个同步节点write_result并进行配置,目的是把表result_table中的数据写入至自己的MySQL数据库中。具体操作如下:
- 切换至数据开发面板,新建一个离线同步节点write_result。
- 设置write_result节点的上游节点为insert_data节点。
- 选择数据源(ODPS > odps_first)、**表(result_table)**为数据来源。
- 选择您新建的MySQL数据源中的表(odps_result)为数据去向。
- 选择字段的映射关系,左侧的源头表字段和右侧的目标表字段为一一对应关系。
- 在通道控制区域,配置作业速率上限和脏数据检查规则。
-
预览保存。
完成上述配置后,上下滚动鼠标即可查看任务配置。确认无误后,单击工具栏中的
图标。
提交数据同步任务
同步任务保存后,返回业务流程。单击工具栏中的
图标,提交同步任务至调度系统中。调度系统会根据配置的属性,从第二天开始自动定时执行。
配置调度和依赖属性
前提条件
请确保您已创建任务write_result,详情请参见创建同步任务。
配置调度属性
- 进入数据开发页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的进入数据开发。
- 在相应的业务流程下,双击打开离线同步节点write_result的编辑页面。
- 单击编辑页面右侧的调度配置。
说明 手动业务流程中创建的节点需要手动触发,无法通过调度执行。
- 在时间属性区域,配置节点的调度属性。
配置依赖属性
依赖属性中可以配置节点的上游依赖,表示即使当前节点的实例已经到定时时间,也必须等待上游节点的实例运行完毕,才会触发运行。
例如,当前节点的实例将在上游insert_data节点的实例运行完毕后,才会触发执行。
在调度系统中,每一个工作空间中默认会创建一个工作空间名称_root节点作为根节点。如果本节点没有上游节点,可以直接依赖根节点。
提交节点
- 在write_result节点的编辑页面,单击工具栏中的 图标。
- 提交节点。
注意 您需要设置节点的重跑属性和依赖的上游节点,才可以提交节点。
- 单击工具栏中的 图标。
- 在提交新版本对话框中,输入备注。
- 单击确认。
如果您使用的是标准模式的工作空间,提交成功后,请单击右上角的发布。具体操作请参见发布任务。
节点只有提交至调度系统中,才会从第二天开始,自动根据调度属性配置的周期,在各时间点生成实例,并定时运行。
说明 如果是23:30以后提交的节点,则调度系统从第3天开始,才会自动周期生成实例并定时运行。
运行及排错
在设置周期和依赖的操作中,您配置了每周二凌晨2点执行离线同步节点。提交节点后,需要到第2天才能看到调度系统自动执行的结果。DataWorks为您提供测试运行、补数据和周期运行三种触发方式,帮助您确认实例运行的定时时间、相互依赖关系、数据结果产出是否符合预期。
说明 手动触发和自动调度的调度系统与周期生成实例的规则一致:
- 无论周期选择小时、分钟、日、月或周,节点在每一个日期都会生成对应的实例。
- 仅在指定日期的对应实例,会定时运行并生成运行日志。
- 非指定日期的对应实例不会实际运行,而是在满足运行条件时,将状态直接转换为成功,因此不会有运行日志生成。
测试运行
- 单击当前页面左上角的图标,选择全部产品 > 运维中心(工作流),进入运维中心页面。
- 在左侧导航栏,单击周期任务运维 > 周期任务。
- 单击相应节点列表后的测试。
- 在冒烟测试对话框中,输入冒烟测试名称,并选择业务日期,单击确定。
-
自动跳转至测试实例页面,单击相应的实例,即可在右侧查看实例DAG图。
右键单击实例,您可以查看该实例的依赖关系和详细信息,并进行终止运行、重跑等具体操作。
说明
- 测试运行是手动触发节点,只要到定时的时间,立即运行,自动忽略实例的上游依赖关系。
- 根据前文所述的实例生成规则,配置为每周二凌晨2点运行的节点write_result,测试运行时选择的业务日期是周一(业务日期=运行日期-1),实例会在2点真正运行。如果不是周一,则实例在2点转换为成功状态,且没有日志生成。
补数据运行
如果需要确认多个节点的定时情况和相互依赖关系,或者需要从某个根节点开始重新执行数据分析计算,您可以进行补数据操作。
- 在运维中心页面,单击左侧导航栏中的周期任务运维 > 周期任务。
- 单击相应节点列表后的补数据 > 当前节点。
- 配置补数据对话框中的参数,单击确定。
-
自动跳转至补数据实例页面,单击相应的实例,即可看到实例DAG图。
右键单击实例,可以查看该实例的依赖关系和详细信息,并进行终止运行、重跑等具体操作。
说明
- 补数据任务的实例依赖前一天,例如补2017-09-15到2017-09-18时间段内的任务,如果15号的实例运行失败了,则16号的实例也不会运行。
- 根据前文所述的实例生成规则,配置为每周二凌晨2点运行的节点write_result,补数据运行时选择的业务日期是周一(业务日期=运行日期-1),实例会在2点真正运行。如果不是周一,则实例在2点转换为成功状态,且没有日志生成。
周期自动运行
周期自动运行,由系统根据所有节点的调度配置自动触发,所以页面没有操作入口。您可以通过以下两种方式查看实例信息和运行日志:
- 在运维中心页面,单击左侧导航栏中的周期任务运维 > 周期实例,选择业务日期或运行日期等参数,搜索write_result节点对应的实例后,右键查看实例信息和运行日志。
-
选择周期实例页面中相应的节点实例并单击,即可看到实例DAG图。
右键单击实例,可以查看该实例的依赖关系和详细信息并进行终止运行、重跑等具体操作。
说明
- 如果上游节点未运行,下游节点也不会运行。
- 如果节点的实例初始状态为未运行,当定时时间到达时,调度系统会检查该实例的全部上游实例是否运行成功。
- 只有上游实例全部运行成功,且定时时间到达的实例,才会被触发运行。
- 处于未运行状态的实例,请确认上游实例已经全部成功且已到定时时间。
使用临时查询快速查询SQL(可选)
如果您已经创建了DataWorks工作空间(MaxCompute项目),可以直接使用DataWorks临时查询功能,快速书写SQL语句操作MaxCompute。
临时查询的详情请参见临时查询。
进入临时查询
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的进入数据开发。
- 在左侧导航栏,单击临时查询。
- 在临时查询面板,右键单击临时查询,选择新建节点 > ODPS SQL。
- 在新建节点对话框中,输入节点名称,并选择目标文件夹。
说明 节点名称的长度不能超过128个字符。
- 单击提交。
运行SQL
现在,您可以在新建的临时查询节点中运行MaxCompute支持的SQL语句,详情请参见SQL概述。
以运行一个DDL语句新建表为例,输入建表语句,单击
即可。
create table if not exists sale_detail
(
shop_name string,
customer_id string,
total_price double
)
partitioned by (sale_date string,region string);
-- 创建一张分区表sale_detail
您可以查看本次运行的费用预估,单击运行。
您可以在下方的日志窗口,查看运行情况和最终结果。如果本次运行成功,结果为OK。
您可以使用同样的方法执行查询语句。