在shell中如何判断HDFS中的文件目录是否存在
Posted 过往记忆大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在shell中如何判断HDFS中的文件目录是否存在相关的知识,希望对你有一定的参考价值。
在Linux文件系统中,我们可以使用下面的Shell脚本判断某个文件是否存在:
# 这里的-f参数判断$file是否存在
if [ ! -f "$file" ]; then
echo "文件不存在!"
fi
但是我们想判断HDFS上某个文件是否存在咋办呢?别急,Hadoop内置提供了判断某个文件是否存在的命令:
[iteblog@www.iteblog.com ~]$ hadoop fs -help
......
-test -[defsz] <path>:Answer various questions about <path>, with result via exit status.
-d return 0 if <path> is a directory.
-e return 0 if <path> exists.
-f return 0 if <path> is a file.
-s return 0 if file <path> is greater than zero bytes in size.
-z return 0 if file <path> is zero bytes in size.
else, return 1.
......
从上面的输出可以看出,我们可以使用test命令来判断某个文件是否存在。如果文件存在,这个命令将返回0;反之则返回1。
[iteblog@www.iteblog.com ~]$ hadoop fs -test -e /path/not/exist
[iteblog@www.iteblog.com ~]$ echo $?
1
[iteblog@www.iteblog.com ~]$ hadoop fs -test -e /path/exist
[iteblog@www.iteblog.com ~]$ echo $?
0
所以我们可以在Shell里面判断HDFS上某个文件是否存在:
hadoop fs -test -d /path/exist
if [ $? -eq 0 ] ;then
echo 'Is a directory'
else
echo 'Is not a directory'
fi
hadoop fs -test -f /path/exist
if [ $? -eq 0 ] ;then
echo 'Is a file'
else
echo 'Is not a file'
fi
hadoop fs -test -s /path/exist
if [ $? -eq 0 ] ;then
echo 'Is greater than zero bytes in size'
else
echo 'Is not greater than zero bytes in size'
fi
hadoop fs -test -z /path/exist
if [ $? -eq 0 ] ;then
echo 'Is zero bytes in size.'
else
echo 'Is not zero bytes in size. '
fi
0、回复 电子书 获取 本站所有可下载的电子书
1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
以上是关于在shell中如何判断HDFS中的文件目录是否存在的主要内容,如果未能解决你的问题,请参考以下文章