本文主要是介绍DataWorks快速入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
快速入门
入门概述
说明
- 如果您是第一次使用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。
您可以使用同样的方法执行查询语句。
这篇关于DataWorks快速入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!