0


【Shell-HDFS】使用Shell脚本判断HDFS文件、目录是否存在

【Shell-HDFS】使用Shell脚本判断HDFS文件、目录是否存在

1)文档编写目的

本文主要讲述如何使用 Shell 脚本判断 HDFS 文件或目录是否存在,算是一个小技巧吧,这几天做 distcp 的时候用到的,因为要判断 HDFS 中是否存在某个目录。

Shell脚本测试:

1、测试路径是否存在。

2、测试目录是否存在。

3、测试文件是否存在。

4、测试路径大小是否大于0。

5、测试路径大小是否等于0。

2)测试原理

通过

hadoop fs -test

来判断文件或者目录是否存在,一次只能传递一个测试参数。

Usage: hadoop fs -test -[defsz] URI
-test: Only one test flag is allowed
Options:
-d: if the path is a directory, return0.
-e: if the path exists, return0.
-f: if the path is a file, return0.
-s: if the path is not empty, return0.
-z: if the file is zero length, return0.

参数说明:

  • -d:如果路径是目录,返回0
  • -e:如果路径存在,返回0
  • -f:如果路径是文件,返回0
  • -s:如果文件的大小大于0字节则返回0
  • -z:如果文件的大小为0,则返回0,否则返回1

3)Shell脚本测试

准备测试目录,包含一个文件和一个文件夹。

[root@bigdata60 ~]# hadoop fs -ls  /user/wdtest
Found 2 items
drwxr-xr-x   - fusionuser wdtest          02018-07-03 13:26  /user/wdtest/.fusion
-rw-r--r--   3 fusionuser wdtest        9082018-07-06 22:37  /user/wdtest/hosts

3.1.测试路径是否存在

1、编写测试脚本如下。

#!/bin/shpath=$1

hdfs dfs -test -e ${path}if[$? -eq 0];thenecho"Path is exist!"elseecho"Path is not exist!"fi

2、执行

./etest.sh /user/wdtest

命令,运行测试脚本,验证输出结果。

在这里插入图片描述

3.2.测试目录是否存在

1、编写测试脚本如下。

#!/bin/bashpath=$1

hdfs dfs -test -d ${path}if[$? -eq 0];thenecho"Directory is exist!"elseecho"Directory is not exist!"fi

2、分别执行

./dtest.sh /user/wdtest

命令和

./dtest.sh /user/wdtest/aa

命令,运行测试脚本,验证输出结果。

在这里插入图片描述

3.3.测试文件是否存在

1、编写测试脚本如下。

#!/bin/shpath=$1path=$1

hdfs dfs -test -f ${path}if[$? -eq 0];thenecho"File is exist!"elseecho"File is not exist!"fi

2、分别执行

./ftest.sh /user/wdtest/hosts

命令和

./dtest.sh /user/wdtest/host

命令,运行测试脚本,验证输出结果。

在这里插入图片描述

3.4.测试路径大小是否大于0

#!/bin/shpath=$1

hdfs dfs -test -s ${path}if[$? -eq 0];thenecho"Is greater than zero bytes in size!"elseecho"Is not greater than zero bytes in size!"fi

3.5.测试路径大小是否等于0

#!/bin/shpath=$1

hdfs dfs -test -z ${path}if[$? -eq 0];thenecho"Is zero bytes in size!"elseecho"Is not zero bytes in size!"fi

4)总结

1、通过

hadoop fs -test -[defsz] URI

可以判断 HDFS 文件或目录是否存在,-test 一次只能传递一个测试参数,不能执行类似 hadoop fs -test -dfURI 或者 hadoop fs -test -d -f URI 这种命令;

2、

hadoop fs -test -[defsz] URI

返回值是不输出的,需要通过

“$?”

这个特殊变量获取返回值;

3、判断 HDFS 文件目录是否存在后,可以执行比如创建、删除目录或文件等操作,当然还有一些更高级的玩法,这里就不演示了。

标签: hdfs hadoop 大数据

本文转载自: https://blog.csdn.net/weixin_53543905/article/details/130237460
版权归原作者 bmyyyyyy 所有, 如有侵权,请联系我们删除。

“【Shell-HDFS】使用Shell脚本判断HDFS文件、目录是否存在”的评论:

还没有评论