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脚本, 我就是把我用到的情况按写脚本的顺序整理在了一起
View Code

 

posted @ 2018-05-15 16:35  TheEarthOnTheFly  阅读(161)  评论(0编辑  收藏  举报