您可以在数据管理DMS中创建和调度DLA任务流实现数仓开发,任务流只需定义一次,即可周期性地自动被调度执行,大大减少人工操作成本。同时执行DLA任务流时产生的中间结果可以被复用,例如用于其他数据分析任务,从而最大化利用DLA的资源。
任务调度中一个重要的功能是任务之间的依赖,为演示该功能,本文在DMS中创建两个DLA任务,表、任务之间的关系如下图所示。
- 任务一
从orders表查询出已经完成的订单:
o_orderstatus = 'F'
,并将其写入finished_orders表。 - 任务二
从finished_orders中查询出总价大于10000的订单:
o_totalprice > 10000
,并将其写入high_value_finished_orders表。
前提条件
- 您需要开通DLA服务,然后创建一个Schema(database)以及在Schema中创建测试表。
- 开通DLA服务,请参见开通云原生数据湖分析服务。
- 初始化数据库主账号密码,请参见重置数据库账号密码。
- 创建Schema和表。
创建Schema
创建orders表 CREATE SCHEMA gmall with DBPROPERTIES( LOCATION = 'oss://oss-bucket-name/gmall/', catalog='oss' );
finished_orders表CREATE EXTERNAL TABLE 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/gmall/orders';
high_value_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/gmall/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://bucket-name/gmall/high_value_finished_orders/';
- 在DMS产品详情页单击立即购买,开通DMS服务。
步骤一:新增DLA数据源
- 登录数据管理DMS控制台。
- 在左侧导航栏选择实例管理,单击实例列表。
- 单击目标实例地址所在行更多中的编辑实例。
- 在编辑实例页面,根据页面提示进行参数配置。
参数类别 参数名称 参数说明 基本信息 数据来源 选择云数据库。 数据库类型 选择DLA-数据湖分析。 实例地区 选择DLA所在地域。 录入方式 您可以通过两种方式录入DLA信息: - 实例ID,从实例列表中选择DLA实例ID。
- 连接串地址,手动输入DLA连接地址。
实例ID - 录入方式为实例ID时,从实例列表中选择DLA实例ID。
- 录入方式为连接串地址时,手动输入DLA连接地址。
数据库账号 DLA中的数据库账号。 数据库密码 数据库账号对应的密码。 管控模式 请参见管控模式。 安全规则 如果您选择的管控模式为安全协同,需要填写安全规则,选择DLA默认规则。 高级信息 环境类型 本例选择生产。 实例名称 DLA的实例ID或者名称。 开启跨库查询 默认选中开启跨库查询,且不支持用户修改。 无锁结构变更 默认选中关闭,且不支持用户修改。 开启SSL 您可以选择默认(DMS与数据库服务自动协商是否开启)、开启或关闭。 实例DBA 您可以根据实际情况选择一个账号作为实例DBA。 查询超时时间(s) 本例设置为60。 导出超时时间(s) 本例设置为600。 - 完成参数配置后单击测试连接,测试成功后单击提交。
步骤二:编排任务流
- 登录数据管理DMS控制台。
- 在上方导航栏,单击传输与加工(DTS)。
- 单击左侧导航栏中的任务编排,然后单击新增任务流。
- 在新建任务流对话框,设置任务流名称和描述,然后单击确认。
- 拖拽两个DLA节点到中间的空白区域中,然后单击任务1的下边框连接点,引出一条到达任务2的带箭头直线关联任务1和任务2。
- 分别单击任务1和任务2节点,在内容设置中输入或者选择DLA Schema的名字,然后单击保存。
- 单击任务1节点,在内容设置中输入SQL实现任务一,即从orders表查询出已经完成的订单
o_orderstatus = 'F'
,并将其写入finished_orders表,单击保存。 insert into finished_orders select O_ORDERKEY, O_TOTALPRICE from orders where O_ORDERSTATUS = 'F';
-
单击任务2节点,在内容设置中输入SQL实现任务二,即从finished_orders中查询出总价大于10000的订单
o_totalprice > 10000
,并将其写入high_value_finished_orders表,单击保存。 insert into high_value_finished_orders select * from finished_orders where O_TOTALPRICE > 10000;
步骤三:运行任务
任务流编排完成后,您可以通过如下方式运行任务。
- 单击试运行,系统弹出提示窗口,单击确认运行任务。
- 开启调度配置为任务设置周期运行策略。
步骤四:查看任务
任务运行结束后,您可以通过如下方式查看任务。
- 单击运维中心查看任务运行状态。
- 登录Data Lake Analytics管理控制台,在DLA中查询任务运行结果。
- 任务一:从orders表查询出已经完成的订单
o_orderstatus = 'F'
。 - 任务二:从finished_orders中查询出总价大于10000的订单
o_totalprice > 10000
。
- 任务一:从orders表查询出已经完成的订单