Shell脚本注意点
1 #!/bin/bash 2 3 procPath="jar包的路径" 4 hdfsdir="hdfs://主节点hostname:端口号" 5 6 # 日期文件执行 7 proctime=$(date +%Y%m%d -d "-2 day") 8 lasttime=$(date +%Y%m%d -d ${proctime}" -1 day") 9 10 # 日期文件执行, 注意: 时间必须写到几号, 这是shell的格式, 否则报错, 找不到文件, 即使文件时间只到年(***2018)或者月(***201805) 11 starttime=$(date +%Y%m%d -d "20180115") 12 endtime=$(date +%Y%m%d -d "20180424") 13 14 15 # 循环, 多个文件执行 16 while [ ${starttime} -lt ${endtime} ]; do 17 18 # 输入文件路径 19 newSnifferUrl="......"${proctime}"/*" 20 21 22 # 输出文件路径, 只有一个路径, 就不用跟变量了 23 historySnifferIndustryUrl="......"${lasttime} 24 25 snifferIndustryOutputUrl="......"${proctime} 26 27 28 # 提交 29 spark-submit --master yarn \ 30 --executor-memory 80g \ 31 --driver-memory 32g \ 32 --total-executor-cores 10 \ 33 --class UserPortraitBySniffer.aggIndustry \ 34 # jar包的路径 35 ${procPath} \ 36 # 你的代码中写了几个路径, 这里就有几个路径, 要一一对应 37 ${hdfsdir} \ 38 ${newSnifferUrl} \ 39 ${historySnifferIndustryUrl} \ 40 ${snifferIndustryOutputUrl} ; 41 42 43 # 其它逻辑 44 hadoop fs -test -e ${historySnifferIndustryUrl} 45 46 if [ $? -eq 0 ]; then 47 hadoop fs -rm -r ${historySnifferIndustryUrl} 48 fi 49 50 done 51 52 53 54 # shell脚本是严格按照顺序执行的, 前面的执行成功, 后面的才会执行, 按日期执行, 55 # shell脚本中写了多少个submit, 在webUI界面就可以看到多少次submit, 而且第一个submit执行成功后, 才会看到第二个 56 # 后台执行, 即使关闭xshell也不影响执行: nohup [shell脚本路径] & 57 58 # 以上的内容可能格式不太规范, 但是这样写. 这不是一个完整的shell脚本, 我就是把我用到的情况按写脚本的顺序整理在了一起