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

[Author]: kwu 

每日定时导入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


你可能感兴趣的:(脚本,数据仓库,自动化)