栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

将日志加载入库的脚本设计(离线数仓项目)

将日志加载入库的脚本设计(离线数仓项目)

目录

1 场景前提:

2 涉及到的shell脚本技术

2.1 获取时间的命令

2.2 发送信息给邮件

2.3 $?

3 脚本


1 场景前提

在我们通过flume将日志服务器的数据采集到hdfs上了

接下来需要将hdfs上的文件导入到hive中

而离线项目数据隔天当天晚上之前传入即可

因此我们可以开发个脚本,每晚自动将数据写入到hive库中

2 涉及到的shell脚本技术

2.1 获取时间的命令

date -d'-1 day' +%Y-%m-%d

释义:获取到前一天的时间,例如:2022-03-27

2.2 发送信息给邮件

mail -s "数仓任务平台-执行通知" 2427770367@qq.com

使用前要下载 mailx

2.3 $?

上个命令的返回值

0为执行成功,其他为失败

3 脚本
#!/bin/bash

##
#
# @author : deep as the sea
# @department: doitedu
# @date : 2022-02-14
# @desc : app端行为日志加载入库
#

export HIVE_HOME=/opt/apps/hive-3.1.2/

# 获取脚本运行时的前一日日期
dt=$(date -d'-1 day' +%Y-%m-%d)

# 如果脚本调用者传入了指定日期,则执行指定日期数据的导入
if [ $1 ];then
dt=$1
fi

# 判断指定日期的数据是否有做过去重处理
datapath=/logdata/applog/${dt}
hdfs dfs -test -e /tmp/distinct_task/applog/${dt}
if [ $? -eq 0 ];then
  echo "检测到${dt}日期的数据有做去重,准备加载去重后的数据"
  datapath=/tmp/distinct_task/applog/${dt}
else
  echo "检测到${dt}日期的数据没有做去重处理,准备加载flume所采集的数据"
fi

echo "加载的路径为: ${datapath}"


${HIVE_HOME}/bin/hive -e "load data inpath '${datapath}' overwrite into table ods.mall_app_log partition(dt='${dt}')"

# 判断上一条命令执行的返回码(判断hive导入是否成功)
if [ $? -eq 0 ];then
  echo "数仓任务执行报告:app行为日志,日期:$dt ,加载入库任务成功"  | mail -s "数仓任务平台-执行通知" 2427770367@qq.com
  exit 0
else
  echo "数仓任务执行报告:app行为日志,日期:$dt ,加载入库任务失败" | mail -s "数仓任务平台-执行通知" 2427770367@qq.com
  exit 1
fi

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784627.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号