【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, return 0.
-e: if the path exists, return 0.
-f: if the path is a file, return 0.
-s: if the path is not empty, return 0.
-z: if the file is zero length, return 0.

参数说明

  • -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          0 2018-07-03 13:26  /user/wdtest/.fusion
-rw-r--r--   3 fusionuser wdtest        908 2018-07-06 22:37  /user/wdtest/hosts

3.1.测试路径是否存在

1、编写测试脚本如下。

#!/bin/sh

path=$1

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

2、执行 ./etest.sh /user/wdtest 命令,运行测试脚本,验证输出结果。

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

3.2.测试目录是否存在

1、编写测试脚本如下。

#!/bin/bash

path=$1

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

2、分别执行 ./dtest.sh /user/wdtest 命令和 ./dtest.sh /user/wdtest/aa 命令,运行测试脚本,验证输出结果。

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

3.3.测试文件是否存在

1、编写测试脚本如下。

#!/bin/sh

path=$1

path=$1

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

2、分别执行 ./ftest.sh /user/wdtest/hosts 命令和 ./dtest.sh /user/wdtest/host 命令,运行测试脚本,验证输出结果。

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

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

#!/bin/sh

path=$1

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

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

#!/bin/sh

path=$1

hdfs dfs -test -z ${path}
if [ $? -eq 0 ]; then
  echo "Is zero bytes in size!"
else 
  echo "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 文件目录是否存在后,可以执行比如创建、删除目录或文件等操作,当然还有一些更高级的玩法,这里就不演示了。文章来源地址https://www.toymoban.com/news/detail-423450.html

到了这里,关于【Shell-HDFS】使用Shell脚本判断HDFS文件、目录是否存在的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java如何判断某文件目录是否存在

    在java中如何判断某文件所在的目录是否存在,若不存在创建目录 可以通过国使用 File 类的 getParentFile() 方法来获取文件所在的目录,并通过 exists() 方法来判断该目录是否存在,若不存在,通过 mkdirs() 方法创建目录,以下为实例 或直接简写

    2024年02月12日
    浏览(75)
  • golang判断目录是否存在和生成日志文件

    package main import (     \\\"fmt\\\"     \\\"io\\\"     \\\"os\\\"     \\\"time\\\"     \\\"github.com/sirupsen/logrus\\\" ) func main() {     defer func() {         err := recover()         if err != nil {             logrus.Info(err)         }     }()     log_path := \\\"runtime/logs/\\\"     _, err := os.Stat(log_path)     if err != nil {         i

    2024年02月16日
    浏览(56)
  • shell脚本实现删除服务器指定目录下文件方法

    上述脚本中,find 命令用于查找指定目录下4天以前的文件,并将其删除。其中,-type f 表示只查找普通文件,不包括目录和符号链接等其他类型的文件;-mtime +3 表示查找修改时间早于3天前的文件;-delete 表示删除查找到的文件。 脚本中的 $folder_path 可以替换为实际的目录路径

    2023年04月19日
    浏览(62)
  • 【Shell篇】循环查找某个目录的脚本文件并打印运行

    这段代码是/build/envsetup.sh文件最后一段代码,搜索了源代码中所有的vendorsetup.sh脚本。 这句代码是一个 shell 命令,大致意思是:如果当前目录中存在名为 device 的目录,则在该目录下递归查找深度不超过 4 级的所有文件中,名字为 vendorsetup.sh 的文件,并将find结果按照字母顺

    2024年02月03日
    浏览(44)
  • shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

    shell脚本如下: 首先 vi calculate_size.sh 写入下入内容 执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

    2024年02月15日
    浏览(55)
  • Linux使用shell脚本判断cpu架构

    sh文件示例如下: #!/bin/sh SCRIPTDIR=\\\"$( cd \\\"$( dirname \\\"$0\\\"  )\\\" pwd  )\\\" dlldir=$SCRIPTDIR cd `dirname $0` get_arch=`arch` dotnetName=\\\"dotnet\\\" if [[ $get_arch =~ \\\"x86_64\\\" ]];then     echo \\\"this is x86_64\\\"     if [ ! -f dotnet ];then         tar xvf aspnetcore-runtime-3.1.30-linux-x64.tar.gz     fi     dotnetName=\\\"./dotnet\\\" elif [[

    2023年04月26日
    浏览(60)
  • shell 脚本中 if 各种条件判断的使用

    1.1 if-elif-else语法格式 1.2 if-else语法格式 1.3 if语法格式 示例: 运行结果: 示例: 运行结果: 示例: 运行结果: 示例: 运行结果:

    2024年02月17日
    浏览(53)
  • shell脚本-批量获取目录下所有文件的md5值、大小、inode值

    MD5的全称是Message-Digest Algorithm 5,它一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5值等同于文件的ID,它的值是唯一的。 如果文件已被修改,其MD5值将发生变化。 运行结果: 文件储存在硬盘上,硬盘的

    2024年02月09日
    浏览(41)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(72)
  • 判断两个IP是否在同一网段(SHELL实现)

    实现代码

    2024年03月19日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包