背景
需要定時將本地文件上傳到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 直接執行即可,其代碼如下

把路徑寫全就不會報錯了
