TDH中的Workflow

本文主要介绍Transwarp的工作流调度框架——Workflow,本文依托于星环的官方文档,通过一个简单的实例来让大家熟悉Workflow的使用。关注专栏《Transwarp系列》了解更多Transwarp的技术知识~


目录

一、Workflow简介

二、Workflow实例

2.1 业务需求

2.2 业务实现


一、Workflow简介

在做数据分析处理时,一个作业往往不能达到我们的业务目的,执行过程中通常会涉及多个作业任务,这些作业按照逻辑执行关系连接,存在着相互依赖关系。比如某数仓的构建过程可能涉及以下几项内容:首先要将原始数据读到HDFS,然后进行数据清洗,接着将数据存入Inceptor分区表,执行SQL语句进行分析,其中可能涉及多表间的关联,过滤等操作,最终将分析结果导入业务系统,以供之后调用查看。若当前系统每天都会因交易的进行新增大量数据,业务部门要求每天进行一次统计处理,所以需要以天为周期执行上述流程。在不采用自动化工具进行调度的情况下,业务人员需要每天手动执行上述几项任务。当然,可以通过脚本来减少工作量,但是一旦涉及多个工作流,系统科学的作业管理是必不可少的。为了简化作业调度工作,减轻工作量,同时实现自动化的工作流管理,于是便有了Transwarp的工作流调度平台——Workflow。

Workflow是一种用于实现工作流调度DAG设计与管理的图形化工具,它支持Shell、SQL、JDBC、HTTP等任务类型,以及自定义Java任务。用户设定好任务执行的逻辑执行顺序之后,它可以自动运行工作流上的离线批处理任务。同开源Hadoop Oozie相比,Workflow在工作流调度方面的功能更强大,操作更方便,可用性更高。

二、Workflow实例

2.1 业务需求

此处有两张表users和orders,users存储了订单的用户信息,orders存储订单信息。现在想要根据每日的订单数据分析出收益最高的地区。 两张表的表结构分别如下所示:

1、user表

2、orders表

users和orders中的数据每天都在新增,增量数据保存在特定目录下。其中users相关文件于每天14:00更新,orders相关文件于每天15:00更新。 为了按订单收益对区域进行排名,现在需要每天实现如下操作:

(1)首先按照两个文件的数据更新时间点,将新增数据分别导入表users和orders。

(2)然后根据业务逻辑执行SQL,对两表进行分析,实现对区域按照收益进行排名。

(3)将本次查询结果和历史记录进行比对。

要求使用Workflow,设计创建工作流,进行自动化管理,从而提高工作效率。

2.2 业务实现

1、首先通过监控界面登录到Workflow界面,在xzw工作区中新建工作流,如下所示:

2、创建了两个SQL任务update users和update orders,用于将文件中存放的每日新增数据更新至users和orders两张表:

(1)update_orders

create table if not exists orders (id int, date date, value float) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
load data inpath "/xzw/orders/orders_add.txt" into table orders;

update orders允许一次重试,并将超时设置为两分钟。 

(2)update_users

create table if not exists users (name string, id int, area string, status char(1), order_id int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
load data inpath "/xzw/users/users_add.txt" into table users;

3、设置两个延时器,timer_users每天14:00调度,用于触发任务update users,timer_orders每天15:00调度,用于触发任务update orders。

4、创建一个SQL任务result,以实现根据销售额对区域进行排名,并将结果保存到一张新的表内。

create table result as select area, sum(value) as sum_value from orders join users on orders.id = users.id group by area order by sum_value desc;

5、创建任务show result,来查看SQL语句的分析结果。

beeline -u 'jdbc:hive2://192.168.0.185:10000/xzw' -n hive -p qdwzh -e "select * from result";

6、将各个任务按照逻辑顺序相连接,并将该工作流的调度时间设置为每天的零点。

7、完成设计后保存,并进入调试模式,如果调试所有任务都显示绿色则表示没有问题,可以发布该工作流。

8、查看结果

以上就是本文的所有内容了,通过一个简单的实例,大家一定对Workflow有了一个初步的认识,本文到此已经接近尾声了,你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

猜你喜欢

转载自blog.csdn.net/gdkyxy2013/article/details/113928011