背景
需要定時將本地文件上傳到HDFS 中,為了方便操作,寫了SHELL腳本定時上傳,其代碼如下,文件名為mkdir_file.sh
export PATH =/opt/soft/hadoop-2.7.7/bin DAY=`date +%d` if [ $DAY -eq 1 ] then hdfs dfs -mkdir /flume/data/logs/`date +%Y%m` hdfs dfs -mkdir /flume/data/logs/`date +%Y%m`/`date +%Y%m%d` echo today first day of this month else hdfs dfs -mkdir /flume/data/logs/`date +%Y%m`/`date +%Y%m%d` date=$(date -d "yesterday" +%Y%m%d) hadoop dfs -put /opt/data/wfbmall/16/history/wfbmall_${date}.log /flume/data/logs/`date +%Y%m`/wfbmall_${date}.log echo ${date} echo today is not first day of this month fi
但是 直接用source mkdir_file.sh 不會報錯,但是通過crontab -e 進行定時就會報錯,
原因:是因為缺少HADOOP運行環境,故把出來的路徑加上 /bin 直接執行即可,其代碼如下
把路徑寫全就不會報錯了