本文档主要介绍了循环调度DLA Presto任务的背景信息和准备工作。
背景信息
DLA作为无服务化的大数据分析服务,通过标准的SQL语句直接对存储在阿里云对象存储服务(Object Storage Service,简称 OSS)、表格存储(Table Store)中的数据进行清洗。例如,使用DLA对OSS中的历史数据按天进行清洗。DataWorks是基于MaxCompute作为计算和存储引擎的用于工作流可视化开发和托管调度运维的海量数据离线加工分析平台,支持按照时间和依赖关系的任务全面托管调度。DLA用户可以通过DataWorks强大的任务托管调度功能,调度执行DLA任务,使用DataWorks、任务依赖关系管理、任务运维等全方位强大的功能。
在使用DLA对OSS中的历史数据按天进行清洗时,由于数据清洗的SQL是固定的,只是每次执行的时候需要传入不同的日期,因此我们可以通过DataWorks来循环调度DLA数据清洗任务。针对上述场景,我们需要在DataWorks中完成以下工作:
部署一个赋值节点,该节点负责输出日期值,并作为下游循环节点的输入。
部署一个循环节点,该节点包含用来做数据清洗的一个或者一组SQL。其中,日期取值是一个变量,每次循环的输入值由赋值节点提供。
任务调度中一个重要的功能是任务之间的依赖,为演示这个功能,本教程以在DataWorks中循环调度从orders表查询出已经完成的订单o_orderstatus = 'F'
,并将其写入finished_orders表为例,为您介绍详细的实施步骤。
准备工作
使用DataWorks循环调度DLA任务之前,您需要先通过以下操作在OSS中准备测试数据、在DLA中创建OSS Schema和表以及创建DataWorks项目空间。
步骤一:在OSS中准备测试数据
步骤二:创建OSS Schema
CREATE SCHEMA dataworks_demo with DBPROPERTIES(
CATALOG ='oss',
LOCATION ='oss://bucket-name/dla/'
);
location:文件所在的OSS Bucket的目录,需以/
结尾。
步骤三:创建OSS表
orders表
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://bucket-name/dla/';
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://bucket-name/dla/finished_orders/';
步骤四:创建DataWorks项目空间
参考DataWorks准备工作,创建项目空间。本教程项目空间为dla_project。