pipline.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/bash
  2. abs_path=$(cd `dirname $0`; pwd)
  3. hdfs_url="hdfs://192.168.141.208:9000"
  4. hdfs_path="/dw/recommend/model/831_recsys_rov_train_data"
  5. hdfs_feature_path="/dw/recommend/model/831_recsys_analysis_data"
  6. data_path="${abs_path}/../data"
  7. model_path="${abs_path}/../model"
  8. monitor_py="${abs_path}/../src/tools/rec_monitor_push.py"
  9. model_name="推荐模型str+_v1"
  10. run_mode=""
  11. if(($#==1))
  12. then
  13. run_mode=$1
  14. else
  15. exit -1
  16. fi
  17. if [[ "$run_mode" != "run" ]]
  18. then
  19. exit -1
  20. fi
  21. # 0. check data
  22. try_times=10
  23. wait_time=300s
  24. data_size_threshold=25000
  25. feature_size_threshold=10000
  26. data_date=$(date +%Y%m%d -d "-1 $days day")
  27. before_data_date=$(date +%Y%m%d -d "-2 $days day")
  28. for((i=0; i<=$try_times; i++))
  29. do
  30. hdfs_file=$(printf "%s/%s/part-00063.gz" $hdfs_path $data_date)
  31. hdfs dfs -fs $hdfs_url -test -e $hdfs_file
  32. if [ $? -ne 0 ]
  33. then
  34. if [ $i -ge $try_times ]
  35. then
  36. echo `date` "$hdfs_file is not exist"
  37. exit -1
  38. else
  39. echo `date` "check $i, $hdfs_file is not exist, sleep $wait_time"
  40. sleep $wait_time
  41. fi
  42. else
  43. echo `date` "$hdfs_file is exist"
  44. data_size=$(hdfs dfs -fs $hdfs_url -text $hdfs_file | wc -l | awk '{print $1}')
  45. if [ $data_size -le $data_size_threshold ]
  46. then
  47. level=error
  48. msg=" ${model_name}更新失败, $hdfs_file $data_size <= $data_size_threshold"
  49. #python3 $monitor_py --level "$level" --model "$model_name" --msg "$msg"
  50. echo `date` "$msg"
  51. exit -1
  52. fi
  53. break
  54. fi
  55. done
  56. # 0.1 download feature
  57. hdfs_feature_file=$(printf "%s/%s/part-00000.gz" $hdfs_feature_path $data_date)
  58. hdfs dfs -fs $hdfs_url -test -e $hdfs_feature_file
  59. if [ $? -ne 0 ]
  60. then
  61. echo `date` "$hdfs_feature_file is not exist"
  62. exit -1
  63. else
  64. local_feature_file="${data_path}/feature_${data_date}.csv"
  65. hdfs dfs -fs $hdfs_url -text $hdfs_feature_file | grep -v -E '@wh@|@unknown|e1@|b8_6h|b8_12h|b9_6h|b9_12h|c9_.*cate|c9_lr1s' > $local_feature_file &
  66. wait
  67. sleep 30s
  68. feature_size=$(wc -l $local_feature_file | awk '{print $1}')
  69. if [ $feature_size -le $feature_size_threshold ]
  70. then
  71. exho `date` "$local_feature_file, $feature_size <= $feature_size_threshold"
  72. exit -1
  73. fi
  74. fi
  75. # 1. download data
  76. down_sh="${abs_path}/download_data.sh"
  77. echo `date` "sh +x $down_sh $before_data_date $data_date"
  78. sh +x $down_sh $before_data_date $data_date &
  79. wait
  80. sleep 30s
  81. # 2. train model
  82. train_sh="${abs_path}/train_model_data.sh"
  83. sub_model_path="${model_path}/${data_date}"
  84. if [ ! -d $sub_model_path ]
  85. then
  86. mkdir $sub_model_path
  87. fi
  88. train_start_date=$(date -d "$data_date -13 day" +"%Y%m%d")
  89. train_end_date=$data_date
  90. save_model_file="${sub_model_path}/model_fm_for_recsys_v1_str.txt"
  91. echo `date` "sh +x $train_sh $train_start_date $train_end_date $save_model_file"
  92. sh +x $train_sh $train_start_date $train_end_date $save_model_file $local_feature_file &
  93. wait
  94. sleep 30s
  95. # 3. update model
  96. update_sh="${abs_path}/update_model.sh"
  97. echo `date` "sh +x $update_sh $save_model_file $model_name"
  98. sh +x $update_sh $save_model_file $model_name &
  99. wait
  100. sleep 30s
  101. # 4. remove data
  102. remove_sh="${abs_path}/remove_data.sh"
  103. sh +x $remove_sh
  104. wait