博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Data Lake Analytics: 使用DataWorks来调度DLA任务
阅读量:6440 次
发布时间:2019-06-23

本文共 3286 字,大约阅读时间需要 10 分钟。

hot3.png

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

开通DLA

在开始之前我们要有一个  的账号,目前 DLA 的新用户都有50T的免费流量,可以放心试用。开通DLA成功后,你会获得一个用户名和密码, 然后在控制台登录就可以使用:

或者如果你是极客,更偏爱命令行,你也可以使用普通的 MySQL 客户端就可以连接 DLA 了:

mysql -hservice.cn-region.datalakeanalytics.aliyuncs.com       -P10000       -u
-p

在这篇文章里面,我会使用 MySQL 命令行给大家演示 DLA 的功能。

申请试用 DataWorks + DLA

开通DLA服务之后,您还需要,目前DataWorks还在公测阶段,放心使用。

然后您可以在您对应的DLA服务群里面找我们任何一位同学开通一下DLA + DataWorks的试用资格(目前这个功能还处于邀请试用的阶段,没有完全放开)。

如果目前还没有专门DLA服务群的客户,可以通过工单联系我们。

DLA数据、库、表准备

为了演示如何在DataWorks上调度DLA的任务,我们后面会用到一些测试数据,这里我们用著名的, 数据保存在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_ordersCREATE 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_ordersCREATE 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数据更详细的信息可以参考:

  • Data Lake Analytics + OSS数据文件格式处理大全: 
  • 使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集: 

在 DataWorks 上创建 DLA 任务

在开通了 DataWorks + DLA 的功能后,我们可以在里面创建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_ordersselect O_ORDERKEY, O_TOTALPRICEfrom orders where O_ORDERSTATUS = 'F';

如下图:

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

use dataworks_demo;insert into high_value_finished_ordersselect * from finished_orderswhere O_TOTALPRICE > 10000;

配置任务依赖

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

task_finished_orders_dep

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

task_high_value_finished_orders_dep

任务发布

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

submit_job

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

all_submited_jobs

选择我们刚刚提交的两个任务,我们就可以发布了:

deploy

在发布列表页面可以查看我们刚刚的发布是否成功:

deployed_package

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

task_ops

总结

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

转载于:https://my.oschina.net/u/1464083/blog/3020948

你可能感兴趣的文章
IT人必须学会的职场四原则
查看>>
Android之剪贴薄实现
查看>>
Sonix SN9P701 OCR点读笔二维码识别源码
查看>>
oracle 单引号 双引号 连接符
查看>>
如何使用fileupload工具来实现文件上传
查看>>
EZ GUI Button和Checkbox创建
查看>>
指针[收藏]
查看>>
审批流程设计方案-介绍(一)
查看>>
Python多进程编程
查看>>
使Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示。
查看>>
IIS_右键点击浏览网站没有反应
查看>>
POJ训练计划1035_Spell checker(串处理/暴力)
查看>>
Makefile 使用总结【转】
查看>>
一起学微软Power BI系列-官方文档-入门指南(4)Power BI的可视化
查看>>
Android.util.Log 关于Android开发中打印log
查看>>
转:Python yield 使用浅析 from IBM Developer
查看>>
仪表板颜色
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
mysql oom之后的page 447 log sequence number 292344272 is in the future
查看>>
chrome禁用某个网站js脚本的执行
查看>>