每日定时导入hive数据仓库的自动化脚本

本文介绍了一个用于每日定时将数据导入Hive数据仓库的Shell脚本。该脚本能够创建临时表并从本地文件系统加载数据,然后转换到正式的分区表中。此外,还介绍了如何设置crontab定时任务来自动执行此脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


每日定时导入hive数据仓库的自动化脚本


创建shell脚本,创建临时表,装载数据,转换到正式的分区表中:

[plain]  view plain copy
  1. #!/bin/sh  
  2. # upload logs to hdfs  
  3.   
  4. yesterday=`date --date='1 days ago' +%Y%m%d`  
  5.   
  6. hive -e "  
  7. use stage;  
  8. create table tracklog_tmp (  
  9. dateday string,  
  10. datetime string,  
  11. ip string ,  
  12. cookieid string,  
  13. userid string,  
  14. logserverip string,  
  15. referer string,  
  16. requesturl string,  
  17. remark1 string,  
  18. remark2 string,  
  19. alexaflag string,  
  20. ua string,  
  21. wirelessflag string  
  22. )  
  23. ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';"  
  24.   
  25.   
  26. hive -e "  
  27. use stage;  
  28. set hive.enforce.bucketing=true;  
  29. set hive.exec.compress.output=true;  
  30. set mapred.output.compress=true;  
  31. set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  
  32. set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  
  33. load data local inpath '/diskg/hexunlogs/tracklog_10.0.251.146/${yesterday}/${yesterday}??.dat' overwrite into table tracklog_tmp;  
  34. insert into table tracklog PARTITION (day='${yesterday}')  select  *  from tracklog_tmp;  
  35. load data local inpath '/diskg/hexunlogs/tracklog_10.0.121.74/${yesterday}/${yesterday}??.dat' overwrite into table tracklog_tmp;  
  36. insert into table tracklog PARTITION (day='${yesterday}')  select  *  from tracklog_tmp;  
  37. load data local inpath '/diskg/hexunlogs/tracklog_10.0.190.13/${yesterday}/${yesterday}??.dat' overwrite into table tracklog_tmp;  
  38. insert into table tracklog PARTITION (day='${yesterday}')  select  *  from tracklog_tmp;  
  39. load data local inpath '/diskg/hexunlogs/trackloguc_10.0.251.146/${yesterday}/${yesterday}??.dat' overwrite into table tracklog_tmp;  
  40. insert into table tracklog PARTITION (day='${yesterday}')  select  *  from tracklog_tmp;  
  41. load data local inpath '/diskg/hexunlogs/trackloguc_10.0.121.74/${yesterday}/${yesterday}??.dat' overwrite into table tracklog_tmp;  
  42. insert into table tracklog PARTITION (day='${yesterday}')  select  *  from tracklog_tmp;  
  43. load data local inpath '/diskg/hexunlogs/trackloguc_10.0.190.13/${yesterday}/${yesterday}??.dat' overwrite into table tracklog_tmp;  
  44. insert into table tracklog PARTITION (day='${yesterday}')  select  *  from tracklog_tmp;  
  45. "  
  46.   
  47. hive -e "  
  48. use stage;  
  49. drop table tracklog_tmp ;"  
  50.   
  51. hive -e "  
  52. set hive.enforce.bucketing=true;  
  53. set hive.exec.compress.output=true;  
  54. set mapred.output.compress=true;  
  55. set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  
  56. set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  
  57. insert into table ods.tracklog PARTITION (day='${yesterday}') select  dateday, datetime,ip,cookieid,userid, logserverip,referer,  
  58. requesturl ,remark1,remark2,alexaflag,ua,wirelessflag from stage.tracklog where  day='${yesterday}' and length(datetime)=12 ;"  



在crontab中加入定时任务

crontab -e    #会跳出一个编辑文本框,

加入如下代码

#import tracklog
25  07 * * * /opt/bin/hive_opt/import_tracklog.sh


刷新定时任务的配置

/sbin/service crond reload

https://blog.youkuaiyun.com/kwu_ganymede/article/details/49095573


--------------crontab-------------


{

基本格式 : 
*  *  *  *  *  command 
分 时 日 月 周 命令 

}

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每月1、10、22日的4 : 45重启apache。 


0 */1 * * * /usr/local/etc/rc.d/lighttpd restart 
每一小时重启apache 


0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 
晚上11点到早上7点之间,每隔一小时重启apache 


参考https://blog.youkuaiyun.com/bsf5521/article/details/76522222

----------java quartz--------------

java quartz的时间格式  多了秒级别的

{

基本格式 : 
*   *  *  *  *  *  command 
  分 时  日    月       周 命令 

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值