使用DataWorks来调度AnalyticDB任务

28次阅读

共计 2766 个字符,预计需要花费 7 分钟才能阅读完成。

DataWorks 作为阿里云上广受欢迎的大数据开发调度服务,最近加入了对于 AnalyticDB 的支持,意味着所有的 AnalyticDB 客户可以获得任务开发、任务依赖关系管理、任务调度、任务运维等等全方位强大的能力,现在就给大家仔细介绍下如何使用 DataWorks 来调度 AnalyticDB 任务。

开通 AnalyticDB

进入阿里云分析型数据库 MySQL 版产品详情页,点击免费试用。最近上线了 15 天免费试用活动,需要首先填写申请表单,审批通过后即可享受免费试用 AnalyticDB 活动。进入购买页面,选择好地域、可用区、ECU 类型、ECU 数量和数据库名,点击立即购买,稍等几分钟时间就可以开通 AnalyticDB 实例。

开通 DataWorks

开通完 AnalyticDB 服务后,紧接着要开通 DataWorks。选择好 region 后点击下一步。

填写工作空间名称,注意模式要改成“标准模式”,创建工作空间。

AnalyticDB 中表和数据准备

为了演示如何在 DataWorks 上调度 AnalyticDB 的任务,我们后面会用到一些测试数据,这里我们用著名的 TPCH 的测试数据集中的 ORDERS 表, 数据已经提前存入表中。
前面开通成功后,我们就可以在 AnalyticDB 中找到数据库,登陆数据库后,创建 ORDERS 表,如下:

CREATE TABLE ads_dla_test.orders (
  o_orderkey int COMMENT '',
  o_custkey int COMMENT '',
  o_orderstatus varchar COMMENT '',
  o_totalprice double COMMENT '',
  o_orderdate date COMMENT '',
  o_orderpriority varchar COMMENT '',
  o_clerk varchar COMMENT '',
  o_shippriority int COMMENT '',
  o_comment varchar COMMENT '',
  PRIMARY KEY (O_ORDERKEY,O_CUSTKEY)
)
PARTITION BY HASH KEY (O_ORDERKEY) PARTITION NUM 32
TABLEGROUP tpch_50x_group
OPTIONS (UPDATETYPE='realtime')
COMMENT ''

CREATE TABLE ads_dla_test.finished_orders (
  o_orderkey int COMMENT '',
  o_totalprice double COMMENT '',
  PRIMARY KEY (O_ORDERKEY)
)
PARTITION BY HASH KEY (O_ORDERKEY) PARTITION NUM 32
TABLEGROUP tpch_50x_group
OPTIONS (UPDATETYPE='realtime')
COMMENT ''

CREATE TABLE ads_dla_test.high_value_finished_orders (
  o_orderkey int COMMENT '',
  o_totalprice double COMMENT '',
  PRIMARY KEY (O_ORDERKEY)
)
PARTITION BY HASH KEY (O_ORDERKEY) PARTITION NUM 32
TABLEGROUP tpch_50x_group
OPTIONS (UPDATETYPE='realtime')
COMMENT ''

任务调度其中一个重要的功能是任务之间的依赖,为了演示这个功能,我们这里会在 DataWorks 里面创建两个 AnalyticDB 任务, 我们的表、任务之间的关系如下图:

  • 任务一: 我们从 orders 表清洗出已经完成的订单: o_orderstatus = ‘F’ , 并写入 finished_orders 表。
  • 任务二: 再从 finished_orders 表里面找出总价大于 10000 的订单: o_totalprice > 10000, 并写入 high_value_finished_orders 表。

在 DataWorks 上创建 AnalyticDB 任务

在开通了 DataWorks + AnalyticDB 的功能后,我们可以在 DataWorks 的数据开发 IDE 里面创建 AnalyticDB 的任务了,如下图:

我们把第一个任务命名为: finished_orders , 点击确定会进入一个 SQL 编辑的页面,要写 AnalyticDB SQL 一定要告诉 DataWorks 我们写的 SQL 运行在哪个服务上,这个在 DataWorks 里面被包装成了 ” 数据源 ” 的概念。

刚进来的时候没有数据源,点击 新建数据源

填写必要的信息点击确定完成。

DataWorks 为了安全的考虑,对可以连接的服务进行了安全控制,因此我们需要把我们要连的 AnalyticDB 数据库的地址 + 端口加到白名单里面去,这个配置是在 DataWorks 工作空间的配置里面:

具体配置如下(需要换成你实际的域名 + 端口):

做了这么多之后,我们终于可以在编辑页面看到 AnalyticDB 的数据源了,下面我们在 finished_orders的任务里面填入如下 SQL, 并点击执行:

use dataworks_demo;
insert into finished_orders
select O_ORDERKEY, O_TOTALPRICE
from orders 
where O_ORDERSTATUS = 'F';

如下图:

重复上述步骤,我们创建第二个任务: high_value_finished_orders

use dataworks_demo;
insert into high_value_finished_orders
select * from finished_orders
where O_TOTALPRICE > 10000;

配置任务依赖

单个任务单次运行没什么太大意思,任务调度的核心在于多个任务按照指定的依赖关系在指定的时间进行运行,下面我们让: task_finished_orders 在每天半夜 2 点开始运行:

high_value_finished_orders 在 finished_orders 成功运行之后再运行:

任务发布

任务配置好之后,就可以进行任务的发布、运维了。任务要发布首先必须提交:

提交之后,我们在待发布列表可以看到所有待发布的任务

选择我们刚刚提交的两个任务,我们就可以发布了。在发布列表页面可以查看我们刚刚的发布是否成功:

发布成功之后,我们就可以进入任务运维页面查看我们的任务,进行各种运维操作了。

总结

在这篇文章里面,我带大家一起体验了一下如何用 DataWorks 来开发、调度 AnalyticDB 的任务,有了这个能力之后大家可以更方便地进行每天任务的开发、运维了。


本文作者:悦畅

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

正文完
 0