Data Lake Analytics: 使用DataWorks来调度DLA任务

DataWorks做为阿里云上广受欢迎的大数据开发调度服务,最近加入了对于Data Lake Analytics的支持,意味着全部Data Lake Analytics的客户能够得到任务开发、任务依赖关系管理、任务调度、任务运维等等全方位强大的能力,今天就给你们介绍一下如何使用DataWorks来调度DLA的脚本任务。mysql

开通DLA

在开始以前咱们要有一个 DLA 的帐号,目前 DLA 的新用户都有50T的免费流量,能够放心试用。开通DLA成功后,你会得到一个用户名和密码, 而后在控制台登陆就能够使用:sql

或者若是你是极客,更偏心命令行,你也能够使用普通的 MySQL 客户端就能够链接 DLA 了:安全

mysql -hservice.cn-region.datalakeanalytics.aliyuncs.com 
      -P10000 
      -u<your-user-name> 
      -p<your-password>
在这篇文章里面,我会使用 MySQL 命令行给你们演示 DLA 的功能。

申请试用 DataWorks + DLA

开通DLA服务以后,您还须要开通DataWorks的服务,目前DataWorks还在公测阶段,放心使用。运维

而后您能够在您对应的DLA服务群里面找咱们任何一位同窗开通一下DLA + DataWorks的试用资格(目前这个功能还处于邀请试用的阶段,没有彻底放开)。ide

若是目前尚未专门DLA服务群的客户,能够经过工单联系咱们。

DLA数据、库、表准备

为了演示如何在DataWorks上调度DLA的任务,咱们后面会用到一些测试数据,这里咱们用著名的TPCH的测试数据集, 数据保存在OSS上面。测试

经过MySQL命令行咱们建立对应的库、表:大数据

CREATE SCHEMA dataworks_demo with DBPROPERTIES(
  CATALOG = 'oss',
  LOCATION = 'oss://test-bucket/datasets/'  
);

use dataworks_demo;
CREATE EXTERNAL TABLE IF NOT EXISTS orders (
    O_ORDERKEY INT, 
    O_CUSTKEY INT, 
    O_ORDERSTATUS STRING, 
    O_TOTALPRICE DOUBLE, 
    O_ORDERDATE DATE, 
    O_ORDERPRIORITY STRING, 
    O_CLERK STRING, 
    O_SHIPPRIORITY INT, 
    O_COMMENT STRING
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
STORED AS TEXTFILE 
LOCATION 'oss://test-bucket/datasets/tpch/1x/text_string/orders_text/';

-- 结果表 finished_orders
CREATE EXTERNAL TABLE IF NOT EXISTS finished_orders (
    O_ORDERKEY INT,  
    O_TOTALPRICE DOUBLE
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
STORED AS TEXTFILE 
LOCATION 'oss://test-bucket/datasets/dataworks_demo/finished_orders/';

-- 结果表 high_value_finished_orders
CREATE EXTERNAL TABLE IF NOT EXISTS high_value_finished_orders (
    O_ORDERKEY INT, 
    O_TOTALPRICE DOUBLE
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
STORED AS TEXTFILE 
LOCATION 'oss://test-bucket/datasets/dataworks_demo/high_value_finished_orders/';

任务调度其中一个重要的功能是任务之间的依赖,为了演示这个功能,咱们这里会在DataWorks里面建立两个DLA任务, 咱们的表、任务之间的关系以下图:阿里云

  • 任务一: 咱们从orders表清洗出已经完成的订单: o_orderstatus = 'F' , 并写入 finished_orders 表
  • 任务二: 再从 finished_orders 表里面找出总价大于10000的订单: o_totalprice > 10000, 并写入 high_value_finished_orders 表
关于如何使用DLA分析OSS数据更详细的信息能够参考:

在 DataWorks 上建立 DLA 任务spa

在开通了 DataWorks + DLA 的功能后,咱们能够在DataWorks的数据开发IDE里面建立DLA的任务了,以下图:命令行

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

DataWorks的规范是任务的名称跟任务的输出表的名称保持一致。

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

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

DataWorks为了安全的考虑,对能够链接的服务进行了安全控制,所以咱们须要把咱们要连的DLA的地址+端口加到白名单里面去,这个配置是在DataWorks工做空间的配置里面:

具体配置以下(须要换成你实际的IP+端口):

这里须要注意一下,工做空间配置只有工做空间管理员才有权限。

作了这么多以后,咱们终于能够在编辑页面看到DLA的数据源了,下面咱们在 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 来开发、调度DLA的任务,有了这个能力以后你们能够更方便地进行天天任务的开发、运维了。

 

原文连接

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

相关文章
相关标签/搜索