shell脚本之数据清洗

本文通过上一节Hadoop离线项目之数据清洗开发的数据清洗jar包,对日志文件进行清洗,并把清洗后的结果移动到hive表里,并刷新元数据信息。并把这个过程写到shell脚本里。
jar包路径:

/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/g6-hadoop-1.0.jar

jar包主程序:

com.ruozedata.hadoop.mapreduce.driver.LogETLDriver

hdfs上日志文件路径:

/g6/hadoop/accesslog/

hdfs上日志文件清洗后要放的路径:

/g6/hadoop/access/output/

hive外部表g6_access指定的路径:

/g6/hadoop/access/clear/

shell脚本代码:

#!/bin/bash
if [ $# != 1 ] ; then
echo "USAGE: g6-train-hadoop.sh <dateString>"
echo " e.g.: g6-train-hadoop.sh 20180717"
exit 1;
fi

process_date=$1

echo "--------------------step1: mapreduce etl--------------------"
hadoop jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/g6-hadoop-1.0.jar com.ruozedata.hadoop.mapreduce.driver.LogETLDriver /g6/hadoop/accesslog/${process_date}.log /g6/hadoop/access/output/day=${process_date}

echo "--------------------step2:mv data to DW--------------------"
hdfs dfs -rm -r /g6/hadoop/access/clear/day=${process_date}
hdfs dfs -mv  /g6/hadoop/access/output/day=${process_date} /g6/hadoop/access/clear/

echo "--------------------step4:flush meatadata--------------------"
hive -e "use g6_hadoop; alter table g6_access add if not exists partition(day='${process_date}');"

然后运行shell脚本:

[hadoop@10-9-140-90 shell]$ ./g6-train-hadoop.sh 
USAGE: g6-train-hadoop.sh <dateString>
 e.g.: g6-train-hadoop.sh 20180717
[hadoop@10-9-140-90 shell]$ ./g6-train-hadoop.sh 20180717
......此处省略

运行成功后,去hive里查看一下:

hive (g6_hadoop)> select * from g6_access where day=20180717 limit 1;
OK
cdn     region  level   time    ip      domain  url     traffic day
baidu   CN      E       20180717042142  156.89.48.178   v2.go2yd.com    http://v1.go2yd.com/user_upload/1531633977627104fdecdc68fe7a2c4b96b2226fd3f4c.mp4_bd.mp4       62109   20180717
Time taken: 0.42 seconds, Fetched: 1 row(s)
hive (g6_hadoop)> 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值