我想编写一个shell脚本,该脚本将对HDFS目录中的所有文件进行迭代,并访问每个文件,并在特定目录中获取每个文件的created_time。
最初,我为Linux文件系统准备了一个脚本,并且运行良好,我的shell脚本可以根据文件创建的数据进行迭代并获取文件,如下所示-
for i in /home/user/Downloads/myDIR/*
do
echo $i
tm=$(stat -c %y $i)
echo $tm | cut -c 1-10
tm2=$(echo $tm | cut -c 1-10)
echo $tm2
if [ "$tm2" = "$(date +%F)" ]
then
cp $i /home/user/OutputDir/
echo "Copy Done"
fi
done
此脚本可以正常工作,但是当我对HDFS文件实施相同的逻辑时,它将无法正常工作。
我已像下面那样将Linux Path替换为HDFS-
for i in `hadoop fs -ls /TestDir
但这并不是对HDFS中的文件进行迭代。
这里有什么我想念的吗?
提前帮助。
答案 0 :(得分:0)
您还需要替换这些命令
stat -c %y $i
至
hadoop fs -stat '%y' $i
cp $i /home/user/OutputDir/
至hadoop fs -copyToLocal $i /home/user/OutputDir/
命令列表,其中包含 hadoop-2.7.2
的选项https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/FileSystemShell.html