概述 对于上述的工作,我们发现需要手动去写hql语句从而完成离线数据的ETL,但每天都手动来做显然是不合适的,所以可以利用hive的文件调用与占位符来解决这个问题。
Hive文件的调用 实现步骤: 1)编写一个文件,后缀名为 .hive, 比如我们现在我们创建一个01.hive文件 目的是在 hive的weblog数据库下,创建一个tb1表
01.hive 文件编写示例:
2)进入hive安装目录的bin目录 执行: 注:-f 参数后跟的是01.hive文件的路径
3)测试hive的表是否创建成功
Hive占位符的使用 我们现在想通过hive执行文件,将 "tb1"这个表删除 则我们可以这样做
1)创建02.hive文件 编写示例:
2)在bin目录下,执行:
结合业务的实现 在hive最后插入数据时,涉及到一个日志的分区是以每天为单位,所以我们需要手动去写这个日期,比如 2017-8-20。
现在,我们学习了Hive文件调用和占位符之后,我们可以这样做
1)将hql语句里的日期相关的取值用占位符来表示,并写在weblog.hive文件里 编写示例:
2.在hive 的bin目录下执行:
对于日期,如果不想手写的话,可以通过linux的指令来获取:
所以我们可以这样来执行hive文件的调用: date “+%G-%m-%d” (注:是键盘左上方的反引号) 也可以写为:
Linux Crontab 定时任务 在工作中需要数据库在每天零点自动备份所以需要建立一个定时任务。 crontab命令的功能是在一定的时间间隔调度一些命令的执行。
可以通过 crontab -e 进行定时任务的编辑
crontab文件格式:
minute hour day month week command 分 时 天 月 星期 命令
每隔1分钟,执行一次任务 编写示例:
每隔一分钟,删除指定目录的 1.txt文件
实现步骤: 1.启动zk集群 2.启动kafka集群 指令: 3.配置flume的agent
配置示例:
启动 4.创建kafka的topic 执行:
5.创建kafak的consumer,测试是否能够收到消息 执行: 6.执行测试: 访问页面——>flume——>kafka
实现步骤:
- 创建java工程
- 导入storm依赖jar包、kafka依赖包、storm-kafka依赖包及相关依赖 3.移除重复的jar包 注意:删除1.75,留1.72的
- 开发代码
Storm业务处理说明 数据清洗: 去除多余的字段 只保留 有用的字段 并且对于ss字段做拆分 url、urlname、uvid、ssid、sscount、sstime、cip
WebLogTopology代码:
PrintBolt代码: