网站流量日志分析--工作流调度--数据入库调度 | 学习笔记

简介: 快速学习网站流量日志分析--工作流调度--数据入库调度

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第五阶段):网站流量日志分析--工作流调度--数据入库调度】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/697/detail/12252


网站流量日志分析--工作流调度--数据入库调度

内容介绍:

一、数据入库调度概述

二、具体方法

三、总结

 

一、数据入库调度概述

数据入库就是俗称的 EDL 经过周期转换加载,把数据导入到数仓的过程,这个阶段的定时调度的难点在于 shell 脚本的编写,因为我们需要去调度 hive 的脚本,虽然 shell 不是我们当下数据调研的主流开发语言,但是通常来说它有固定的格式,以我们项目来说调度方式比较简单,这个格式虽然不能保证百分之百的正确,但是可以保证写的具有逻辑性,

大体框架如下:

#!/bin/bash

#set java eav

#set hadoop. env

设置一些主类、目录等常量

获取时网信息

第一大块:集中去定义一些当下需要的脚本、软件环境变量,方便后续的使用;第二大块:设置一些主类、目录,获取时间的常量信息,集中维护、便于管理;第三大块:shell 主程序、结合流程控制(if....else)去分别执行 shell 命令。

 

二、具体方法

打开参考资料,在 loaddata 的文件夹里有两个文件,一个叫做 .job,为任务调度配置文件,一个是 .sh 为 shell 脚本。

1..job 配置文件

我们首先来看 .job 配置文件,type 类型等于 command, 用来去执行脚本,这个脚本就是文件夹中的另一个文件,load-weblog.sh 脚本,整个调度的任务就交给了这个脚本当中,脚本怎么编写调度就怎样执行。

2..sh 脚本文件

右键打开 shell 脚本文件,查看编写的内容。脚本的第一行定义了一个脚本的解释器然后导入了 hive 的环境变量,hive 环境变量要和服务器环境所对应,然后是一个获取时间的 if 循环,如 $# 表示输入的参数个数,如果输入参数个数等于 1,时间就等于输入的时间值 $#1 ,格式为年月日,否则的话,时间就等于当前时间减一天,即把时间往前推一天,通常来说是每天凌晨处理前一天的。当然是否需要减去一天或者两天,根据业务习惯来做相关修改即可。

接下来定义一个 hiveSQL 的字符串,需要做的是数据入库操作,就是 loaddata 的操作,当下数据位于 Hadoop 当中,现在要把预处理完之后的数据,包括点击的统计数据,导入到 hive 数仓当中。

导入命令十分简单:load.data inpath, 把预处理路径进行复制,然后做一个替换,把这个路径下的文件导入到 into table 原始日志表中,代表 origin。

接下来我们在窄表当中输入 show partitions,查看当前的分区,当前窄表当中只有一个 2018101 的分区数据,这个数据分区不是胁持的,是根据刚才动态之间的值导入的,可以导入指定某一天的数据,也可以导入当前时间前一天的数据。

hive 脚本的运行,hive-e,-e 表示执行后面的 SQL 语句,如果这个 SQL 语句比较长,可以把它写出来,脱离成一个 SQL 文件。

3、运行

确定完这一块的逻辑之后,把上述两个文件打成一个 zip 压缩包,然后打开阿兹卡班的工程页面,首先创建一个新的工程叫做加载数据 loaddata,还是由 Itheima 进行提交,把刚才打包的压缩包进行选择上传,上传完成之后,开始进行相关操作,执行 SQL,查看效果,等待发现显示绿色的 succeed 成功,如果出错报的是红色的,可以去查看相关执行日志检查出错来源。

4、检验

点开 user-hive-Itheima,找到 origin 原始表,可以看到新的分区表进来了,另外一种方式,可以通过 show partitions 命令进行查看,相当于增量导入一个分区的数据,表示一天一处理的话,每天都会导入一个数据。

 

三、总结

数据入库进行脚本编写的整个核心问题在于掌握如何使用 azkaban 调度 hive 脚本。

1、shell 脚本的编写

导入 shell 需要软件的环境变量

集中定义时间目录属性等常量变量

程序的主体要去结合流程控制进行编写

2、如何使用 azkaban 调度 hive

hive-e 调度 sql 语句

hive-f 调度 sql 脚本

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
117 40
|
1天前
|
人工智能 数据可视化 开发工具
Git log 进阶用法(含格式化、以及数据过滤)
Git log 进阶用法(含格式化、以及数据过滤)
|
2天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
74 11
|
8天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
15 0
|
8天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
39 0
|
1月前
|
分布式计算 DataWorks 调度
DataWorks常见问题之设置好调度时间的任务运行后查看运行日志报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
42 0
|
3月前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
3月前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
36 0
|
4月前
|
SQL 关系型数据库 MySQL
⑩⑥ 【MySQL】详解 触发器TRIGGER,协助 确保数据的完整性,日志记录,数据校验等操作。
⑩⑥ 【MySQL】详解 触发器TRIGGER,协助 确保数据的完整性,日志记录,数据校验等操作。
39 0
|
8天前
|
存储 数据库 流计算
Flink CDC为什么我几张表十来条数据就产生了那么大日志?
Flink CDC为什么我几张表十来条数据就产生了那么大日志?
111 0