开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第五阶段):网站流量日志分析--工作流调度--数据指标统计分析调度】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/697/detail/12253
网站流量日志分析--工作流调度--数据指标统计分析调度
内容介绍:
一、数据指标统计分析调度概述
二、具体实现方法
三、总结
一、数据指标统计分析调度概述
数据统计计算分析时的任务调度该怎样执行?
项目统计计算时的很多指标可以通过数仓进行查看,输入 show tables 即可,如果后续每天都要去计算这些指标,就需要软件去定时周期性的重复执行该命令,azkaban 的使用会非常的方便,要点还是如何利用 azkaban 去调度 SQL 语句。
二、具体实现方法
1、保证 sql 语句书写正确
打开参考资料文件夹,在文件夹中有一个 have-sql 文件,首先需要要明确,你要想完成调度,所有指标无论在哪里测试都要保证 sql 语句是正确的,例如模型:每个小时不重复来访 IP 产生的 PV、平均访问量、来访的 host 的 raphel 等。
2、编写调度
以 .job 配置为例,点击后打开可以看到 type=command,类型等于 command,command 命令为 sh 后的脚本还是调度的脚本,因此整个任务的重点就在这个脚本当中。
右键打开该脚本,可以看到脚本的数据来源于 user-dstc-ip-h, 每小时来访的 host 所产生的 PV 数,可以发现该 sql 语句是把其定义成了一个字符串,编写为 sql=,如果内容比较长,可以把它定义为一个 sql 文件,用-f完成调用。
删除这个表,然后创建新的表,由来访的 IP、PV 以及每个小时构成,通过 sql into 把数据抄入该表当中进行相关的操作。
3、检验表是否写入
在当前数仓中的 user-dstc-ip-H,为了验证其有没有真正完成,可以将其重新命名,比如将 drop 后改为 h1,下面的数据表都要进行创建,对应的之前表中的 h,insert into table 表示插入该表中,查询 Ip count1 as pvs,from ods weblog detail where datestr=20181101 group by contact{month,day,hour}
,将上述 sql 语句提出并进行验证,执行后确保其是否正确,如果报错,就不用进行 azkaban 下一步地执行。
执行后报错,提示 Table not found ods, 表示没有发现这个表,即表名出现问题了,不叫做 ods, 确定表名为 dw-weblog-detail,所以应修改为:from dw-weblog-detail。为了方便建议把所有表之前加上 itheima。
因为我在用 azkaban 进行操作的时候,是基于整个库资来进行的,没有具体选择某一个库,因此使用库表名的方式更为专业。
4、具体操作
把表名复制并创建该表,然后是 insert table itheima,插入这个表当中,日期为20181101 group by contact{month,day,hour}
,验证 sql 语句有没有问题,复制后打开 hive,在开发环境中保证 sql 没有问题是十分重要的,如果 sql 不加验证就直接提交到环境中运行将会产生十分严重的后果。
验证后如果 sql 语句没有任何问题就可以在 azkaban 中执行。然后打成一个 zip 压缩包,打开 azkaban 页面,在这里创建一个新的功能,叫做每个小时来访量,名称可以随便起,但是要保证在企业中有实际的意义。
创建完成后,把刚才压缩好的文件选择后上传,执行并验证是否可以完成数据操作,等待后发现结果变绿,而且显示为 succeeded,即执行成功,如果出错可以查询执行过程中哪些信息有问题。
接下来在 hive 中使用 show tables
命令来验证表是否真正存在,可以发现此时多了一个表 user-dstc-ip-h1,就是我们刚才创建的表。输入*from dw-user-dstc-ip-h1 limit 10
,可以得到相关的数据。这样就完成了指标计算过程中的任务调度。
三、总结
这一部分的 azkaban 比较简单,主要在于如何编写 hive 的 sql 脚本,在开发环境下,要确保业务 sql 没有问题才能够执行起来,然后把 sql 提交到确定环境当中,利用 azkaban 或者其他工具进行线上的正式执行。