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

news/2024/5/20 2:58:08 标签: hdfs, hadoop, 大数据

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

  • 1)文档编写目的
  • 2)测试原理
  • 3)Shell脚本测试
    • 3.1.测试路径是否存在
    • 3.2.测试目录是否存在
    • 3.3.测试文件是否存在
    • 3.4.测试路径大小是否大于0
    • 3.5.测试路径大小是否等于0
  • 4)总结

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 命令,运行测试脚本,验证输出结果。

在这里插入图片描述

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 命令,运行测试脚本,验证输出结果。

在这里插入图片描述

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 命令,运行测试脚本,验证输出结果。

在这里插入图片描述

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 文件目录是否存在后,可以执行比如创建、删除目录或文件等操作,当然还有一些更高级的玩法,这里就不演示了。


http://www.niftyadmin.cn/n/239878.html

相关文章

数据库锁表原因、排查、解决

数据库锁表原因、排查、解决 一.场景场景1场景2 二.原因三.排查四.解决方案 一.场景 场景1 锁表通常发生在DML( insert 、update 、delete ) A操作进行全量数据同步,对整个表的粒度进行上锁,导致B操作只能等待A操作完成才能进入…

HTML5 <meter> 标签、HTML5 <mark> 标签

HTML5 <meter> 标签 实例 使用 meter 元素展示给定的数据范围&#xff1a; <meter value"2" min"0" max"10">2 out of 10</meter><br> <meter value"0.6">60%</meter>尝试一下 浏览器支持 Fir…

mulesoft MCIA破釜沉舟备考 2023.04.19.19

mulesoft MCIA破釜沉舟备考 2023.04.19.19 1. A Kubernetes controller automatically adds another pod replica to the resource pool in response to increased application load.2. According to MuleSoft, what is a major distinguishing characteristic of an applicati…

智加科技与舍弗勒签订商用车先进转向系统量产合作协议,将率先量产行业首个正向开发的智能重卡冗余转向

自动驾驶已经成为当前汽车行业的重要发展趋势之一。在此背景下&#xff0c;在2023上海国际汽车展期间&#xff0c;智加科技与舍弗勒集团签订量产合作协议&#xff0c;双方将在自动驾驶商用车先进转向系统领域展开合作&#xff0c;共同推动重卡自动驾驶的技术应用和创新发展。 图…

第一性原理计算在材料分析中的应用及未来发展趋势

第一性原理计算是一种理论计算方法&#xff0c;能够基于量子力学原理对物质的性质进行高精度预测。它已经成为材料科学研究中不可或缺的工具&#xff0c;帮助我们了解材料的基本特性&#xff0c;优化材料的性能&#xff0c;并发现新的材料。 一、第一性原理计算的基本原理 第一…

zabbix故障排查

zabbix server服务问题可以查看server日志 tail -f /var/log/zabbix/zabbix_server.log 根据日志中的error报错提示分析原因 zabbix agent服务问题可以查看agent日志 tail -f /var/log/zabbix/zabbix_agentd.log 根据日志中的error报错提示分析原因 zabbix的nginx服务问题可…

Qt音视频开发39-海康sdk回调拿到数据GPU绘制的实现

一、前言 采用海康的sdk做开发&#xff0c;最简单最容易的方式就是传入句柄&#xff08;windows和linux都支持/很多人以为只有windows才支持&#xff09;即可&#xff0c;这种方式不用自己处理绘制&#xff0c;全部交给了sdk去处理&#xff0c;所以cpu的占用是最低的&#xff…

4.29和4.30、epoll的API介绍和代码编写

4.29和4.30、epoll的API介绍和代码编写 1.epoll的IO多路复用使用流程图2.epoll的相关函数的使用介绍3.epoll代码编写①epoll服务端②客户端&#xff08;没变&#xff0c;和之前一样&#xff09; 1.epoll的IO多路复用使用流程图 2.epoll的相关函数的使用介绍 #include <sys/…