1遍历文件时,返回的是相对路径,不是文件名 ,要注意!!!
2遍历文件操作,重命名,压缩文件
i=1
for subfile in `ls $hdfs_dir/$unzipfile_name/*.json`
do
echo subfile=$subfile
seq=`echo ${i}|awk '{printf("%02d\n",$0)}'`
mv $subfile $hdfs_dir/$unzipfile_name/$module_name$seq.json
zip --password $zippwd -j $zip_dir/$module_name/$seq.zip $hdfs_dir/$unzipfile_name/$module_name$seq.json
#zip dd.zip aaa.txt
let i=i+1
done
3 注意date的 -d参数要加双引号,单引号,或者不加引号都报错
end_time=$(date "+%Y-%m-%d %H:%M:%S")
sleep 5
end_time2=$(date "+%Y-%m-%d %H:%M:%S")
echo $end_time,$end_time2
ts=$(($(date +%s -d "$start_time") - $(date +%s -d "$end_time")));
echo $(($ts/60)) min
4 关于设置环境变量,注意软连接的存在,导致crontab路径识别错误,下面的hadoop的路径放在了$PATH的后面,而这个$PATH里又包含了hadoop的软连接,从而导致hadoop命令执行错误,当然直接执行脚本是正常的
#!/bin/bash
HADOOP_HOME=/atmd/hadoop
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#export PATH
hadoop fs -ls /home/tme | awk '{print $8}'
5 查看文件或目录大小 ls只能看每个个文件的,对于目录而说更看不到大小 du (disk used) -h可M,G显示,非字节
[tme@tcbj3-dmetl01 tme_upload]$ du -sh hdfs/20190822
147G hdfs/20190822
同样的,如果要查看hadoop上的文件大小
[dcadmin@tcbj3-dmdis01 log_upload]$ hadoop fs -du -s -h /home/tme
19/08/23 10:56:41 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
438.4 G /home/tme