共计 3328 个字符,预计需要花费 9 分钟才能阅读完成。
Data Lake Analytics 中如何使用 DataWorks 来调度 DLA 任务,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
DataWorks 作为阿里云上广受欢迎的大数据开发调度服务,最近加入了对于 Data Lake Analytics 的支持,意味着所有 Data Lake Analytics 的客户可以获得任务开发、任务依赖关系管理、任务调度、任务运维等等全方位强大的能力,今天就给大家介绍一下如何使用 DataWorks 来调度 DLA 的脚本任务。
开通 DLA
在开始之前我们要有一个 DLA 的账号,目前 DLA 的新用户都有 50T 的免费流量,可以放心试用。开通 DLA 成功后,你会获得一个用户名和密码, 然后在控制台登录就可以使用:
或者如果你是极客,更偏爱命令行,你也可以使用普通的 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 的试用资格 (目前这个功能还处于邀请试用的阶段,没有完全放开)。
如果目前还没有专门 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 数据更详细的信息可以参考:
Data Lake Analytics + OSS 数据文件格式处理大全: https://yq.aliyun.com/articles/623246
使用 Data Lake Analytics + OSS 分析 CSV 格式的 TPC- H 数据集: https://yq.aliyun.com/articles/623282
在 DataWorks 上创建 DLA 任务
在开通了 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 成功运行之后再运行:
任务发布
任务配置好之后,就可以进行任务的发布、运维了。任务要发布首先必须提交:
提交之后,我们在待发布列表可以看到所有待发布的任务:
选择我们刚刚提交的两个任务,我们就可以发布了:
在发布列表页面可以查看我们刚刚的发布是否成功:
发布成功之后,我们就可以进入任务运维页面查看我们的任务,进行各种运维操作了。
看完上述内容,你们掌握 Data Lake Analytics 中如何使用 DataWorks 来调度 DLA 任务的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!