前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Shell脚本判断HDFS文件/目录是否存在

如何使用Shell脚本判断HDFS文件/目录是否存在

作者头像
Fayson
发布2018-09-29 10:38:34
5.6K0
发布2018-09-29 10:38:34
举报
文章被收录于专栏:Hadoop实操

1 文档编写目的

本文主要讲述如何使用Shell脚本判断HDFS文件或目录是否存在,算是一个小技巧吧,这几天做PoC的时候感觉还挺有用的。因为HDFS设计的是“一次写入,多次读取”,不可以修改数据,只能追加或者删除,所以,如果目标文件或目录在HDFS上已经存在的话,则无法创建成功。

测试环境:

操作系统版本为Redhat7.2

CM和CDH版本为5.11.2

文章目录结构:

1. 文档编写目的

2. 测试原理

3. Shell脚本测试

3.1 测试路径是否存在

3.2 测试目录是否存在

3.3 测试文件是否存在

4. 总结

2 测试原理

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

Usage: hadoop fs -test -[defsz] URI-test: Only one test flag is allowedOptions:-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.

比如判断HDFS上的某个文件目录是否存在,可以执行如下命令:

hadoopfs -test -d $path #判断目录是否存在

hadoopfs -test -e $path #判断路径(文件或者目录)是否存在

3 Shell脚本测试

3.1 测试路径是否存在

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

[root@bigdata60 ~]# hadoop fs -ls /user/wdtestFound 2 itemsdrwxr-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

2、编写测试脚本如下:

#!/bin/sh path=$1 hadoop fs -test -e $pathif [ $? -eq 0 ]; then echo "Path is exist!"else echo "Path is not exist!"fi

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

3.2 测试目录是否存在

1、编写测试脚本如下:

#!/bin/sh path=$1 hadoop fs -test -d $pathif [ $? -eq 0 ]; then echo "Directory is exist!"else echo "Directory is not exist!"fi

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

3.3 测试文件是否存在

1、编写测试脚本如下:

#!/bin/sh path=$1 hadoop fs -test -f $pathif [ $? -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”命令,运行测试脚本,验证输出结果

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、-s和-z命令我测试过,但觉得不怎么常用,所以没在文章中讲述,有兴趣可以自己测一下,比较简单,更换一下脚本参数即可;

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


When your talent can’t support your ambition, You should calm down and learn. When your ability cannot realize you dreams, You should practice with all your heart. Ask yourself, What kind of life you pursue.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 文档编写目的
  • 2 测试原理
  • 3 Shell脚本测试
    • 3.1 测试路径是否存在
      • 3.2 测试目录是否存在
        • 3.3 测试文件是否存在
        • 4 总结
        相关产品与服务
        专用宿主机
        专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档