Azkaban任务调度

3 篇文章 0 订阅
2 篇文章 0 订阅

需求

现有用户点击行为数据文件,每天产生会上传到hdfs目录,按天区分目录,现在我们需要每天凌晨两点定时导入Hive
表指定分区中,并统计出今日活跃用户数插入指标表中。

日志文件

clicklog
userId click_time index
uid1 2020-06-21 12:10:10 a.html
uid2 2020-06-21 12:15:10 b.html
uid1 2020-06-21 13:10:10 c.html
uid1 2020-06-21 15:10:10 d.html
uid2 2020-06-21 18:10:10 e.html
用户点击行为数据,三个字段是用户id,点击时间,访问页面
hdfs目录会以日期划分文件,例如:
/user_clicks/20200621/clicklog.dat
/user_clicks/20200622/clicklog.dat
/user_clicks/20200623/clicklog.dat

Hive表

原始数据分区表
create table user_clicks(id string,click_time string index string) partitioned by(dt string) row format delimited fields terminated by ‘\t’ ;
需要开发一个import.job每日从hdfs对应日期目录下同步数据到该表指定分区。(日期格式同上或者自定义)

指标表

create table user_info(active_num string,date string) row format delimited fields terminated by ‘\t’ ;
需要开发一个analysis.job依赖import.job执行,统计出每日活跃用户(一个用户出现多次算作一次)数并插入
user_inof表中。

作业:

开发以上提到的两个job,job文件内容和sql内容需分开展示,并能使用azkaban调度执行。

思路

1.指定hdfs目录存放每天的用户点击日志
2.创建定时任务import1,同步数据到指定分区;
3.使用定时任务统计出每日活跃用户插入user_info中
4.定时任务使用方式假设对前一天的数据进行分析,下列shell中日期都取得是前一天

1.数据准备

在这里插入图片描述

2 import.job

type=command
command=sh import.sh

3 import.sh

#!/bin/sh

echo 'import data from hdfs。。。'

yesterday=`date -d last-day +%Y%m%d`

echo "昨天时间:'$yesterday'"

/opt/lagou/servers/hive-2.3.7/bin/hive -e "USE default;LOAD DATA INPATH '/lagou/clicklog/$yesterday/*' OVERWRITE INTO TABLE user_clicks PARTITION (dt='$yesterday');"

4 analysis.job

type=command
dependencies=import
command=sh analysis.sh

5 analysis.sh

#!/bin/sh

echo 'analysis user click data。。。'

yesterday=`date -d last-day +%Y%m%d`

echo "昨天时间:'$yesterday'"

/opt/lagou/servers/hive-2.3.7/bin/hive -e "USE default;INSERT INTO TABLE user_info (SELECT id , dt FROM user_clicks where dt = '$yesterday' GROUP BY dt,id);"

schedule

在这里插入图片描述

执行结果

import
在这里插入图片描述
analysis
在这里插入图片描述
hive结果在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值