如何使用schell脚本迭代HDFS目录中的所有文件?

时间:2019-03-30 04:18:30

标签: linux shell hadoop hdfs sh

我想编写一个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中的文件进行迭代。

这里有什么我想念的吗?

提前帮助。

1 个答案:

答案 0 :(得分:0)

您还需要替换这些命令

  1. stat -c %y $ihadoop fs -stat '%y' $i

  2. 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