背景
需要定时将本地文件上传到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 直接执行即可,其代码如下
把路径写全就不会报错了