test_train_model.sh 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. current_data=20250624 # train end date
  2. today_early_1=20250625
  3. train_data_days=14
  4. model_name=model_xgb_dev_20250623
  5. feature_file=20240703_ad_feature_name.txt
  6. BUCKET_FEATURE_PATH=/dw/recommend/model/dev_20250623/33_ad_train_data
  7. model_ver=dev_20250623
  8. MODEL_PATH=/root/yuehailiang/xgboost-dev/
  9. sh_path=$(cd $(dirname $0); pwd)
  10. source ${sh_path}/00_common.sh
  11. init() {
  12. set +x
  13. declare -a date_keys=()
  14. local count=1
  15. # 循环获取前 n 天的非节日日期
  16. while [[ ${count} -le $train_data_days ]]; do
  17. date_key=$(date -d "${current_data}" +%Y%m%d)
  18. # 判断是否是节日,并拼接训练数据路径
  19. if [ $(is_not_holidays ${date_key}) -eq 1 ]; then
  20. # 将 date_key 放入数组
  21. date_keys+=("${date_key}")
  22. if [[ -z ${train_data_path} ]]; then
  23. train_data_path="${BUCKET_FEATURE_PATH}/${date_key}"
  24. else
  25. train_data_path="${BUCKET_FEATURE_PATH}/${date_key},${train_data_path}"
  26. fi
  27. count=$((count + 1))
  28. else
  29. echo "日期: ${date_key}是节日,跳过"
  30. fi
  31. current_data=$(date -d "${current_data} -1 day" +%Y%m%d)
  32. done
  33. last_index=$((${#date_keys[@]} - 1))
  34. train_first_day=${date_keys[$last_index]}
  35. train_last_day=${date_keys[0]}
  36. model_save_path=${MODEL_PATH}/${model_name}_${train_first_day: -4}_${train_last_day: -4}
  37. predict_date_path=${BUCKET_FEATURE_PATH}/${today_early_1}
  38. new_model_predict_result_path=${PREDICT_RESULT_SAVE_PATH}/${today_early_1}_${model_ver}_${train_first_day: -4}_${train_last_day: -4}
  39. echo "init param train_data_path: ${train_data_path}"
  40. echo "init param predict_date_path: ${predict_date_path}"
  41. echo "init param new_model_predict_result_path: ${new_model_predict_result_path}"
  42. echo "init param model_save_path: ${model_save_path}"
  43. echo "init param feature_file: ${feature_file}"
  44. echo "init param model_name: ${model_name}"
  45. }
  46. xgb_train() {
  47. local step_start_time=$(date +%s)
  48. /opt/apps/SPARK3/spark-3.3.1-hadoop3.2-1.0.5/bin/spark-class org.apache.spark.deploy.SparkSubmit \
  49. --class com.tzld.piaoquan.recommend.model.train_01_xgb_ad_20250104 \
  50. --master yarn --driver-memory 6G --executor-memory 10G --executor-cores 2 --num-executors 11 \
  51. --conf spark.yarn.executor.memoryoverhead=2048 \
  52. --conf spark.shuffle.service.enabled=true \
  53. --conf spark.shuffle.service.port=7337 \
  54. --conf spark.shuffle.consolidateFiles=true \
  55. --conf spark.shuffle.manager=sort \
  56. --conf spark.storage.memoryFraction=0.4 \
  57. --conf spark.shuffle.memoryFraction=0.5 \
  58. --conf spark.default.parallelism=200 \
  59. /root/yuehailiang/recommend-model/recommend-model-produce/target/recommend-model-produce-1.0.0.jar \
  60. featureFile:20240703_ad_feature_name.txt \
  61. trainPath:${train_data_path} \
  62. testPath:${predict_date_path} \
  63. savePath:${new_model_predict_result_path} \
  64. modelPath:${model_save_path} \
  65. eta:0.01 gamma:0.0 max_depth:5 num_round:1000 num_worker:10 repartition:20 \
  66. negSampleRate:0.04
  67. #local return_code=$?
  68. #check_run_status ${return_code} ${step_start_time} "XGB模型训练任务" "XGB模型训练失败"
  69. }
  70. init
  71. xgb_train