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

news2025/3/12 13:28:05

【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.coloradmin.cn/o/433279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调节磁盘和CPU的矛盾-InnoDB的Buffer

一、缓存的重要性 所以 InnoDB 存储引擎在处理客户端的请求时,当需要访问某个页的数据时,就会把完整的页的数据全部加载到内存中,也就是说即使我们只需要访问一个页的一条记录,那也需要先把整个页的数据加载到内存中。将整个页加…

十大排序总结

十大排序 稳定性 有一个数组,3,2,3,4,1 我们把第一个3标记为黑色 第二个3标记为红色 如果排序之后,黑色的3仍在红色3前边,我们就认为这个排序是稳定的 如果红色3在黑色3前面,我们就认为这个排序是不稳定的 插入排序 直接插入排序 想象斗地主时咋摸牌的,保证有序 import…

【Linux系统】Linux文件系统与日志分析

文件系统与日志分析 一、inode与block1.1inode和block概述1.2inode包含文件的元信息1.3Linux系统文件的三个主要时间属性1.4用户通过文件名打开文件的过程1.5inode的大小1.6模拟磁盘ionde用完 二、日志文件2.1日志的功能2.2日志文件的分类2.2.1内核及系统日志2.2.2用户日志2.2.…

深入理解Linux文件系统和日志分析

目录 一、inode于block 1)inode于block概述 2)inode的内容 inode包含文件的元信息 用stat命令可以查看某个文件的inode信息 Linux系统文件三个主要的时间属性 目录文件的结构 用户通过文件名打开文件时,系统内部的过程 查看inode号码…

5.39 综合案例2.0 - STM32蓝牙遥控小车4(体感控制)

综合案例2.0 - 蓝牙遥控小车4- 体感控制成品展示案例说明器件说明小车连线小车源码遥控手柄遥控器连线遥控器代码1.摇杆PS2模块说明2.六轴MPU-6050说明成品展示 案例说明 用STM32单片机做了一辆蓝牙控制的麦轮小车,分享一下小车的原理和制作过程。 控制部分分为手机…

POSTGRESQL LINUX 与 PG有关的内存参释义

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

阿里阿里,搞不定政企

如果我们问一位关注科技产业,或者关注云计算、AI技术的朋友,4月11日的阿里云北京峰会上讲了什么。他应该马上会说,发布了通义千问啊。 这话确实没错。但仔细观察这场会,却会发现一个问题:嘉宾好像不太对。 AI与大模型活…

代码随想录训练营day48|198、打家劫舍;213、打家劫舍II;337、打家劫舍III

198、打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

HelloWorld案例详解

HelloWorld案例的编写和执行 Java程序开发运行流程 开发Java程序,需要三个步骤: ●编写代码 ●编译代码 ●运行代码 HelloWorld案例的编写 新建文本文档文件,修改名称为HelloWorld.java用记事本打开HelloWorld.java文件,输写…

如何理解样本统计量?

本期介绍样本统计量是怎么算的,并用Python来模拟随机抽样。用一个在鱼塘捞鱼的简单例子来理解样本均值的概念。 如何理解重复试验? 指能够在完全相同条件下进行多次的试验; 比如我们抛10枚硬币,用来计算正面出现的概率&#xff…

(6) 聚类算法KMeans(案例:矢量量化的降维)

文章目录 理论知识1 sklearn.cluster.KMeans1.1 参数n_clusters1.1.1 小试牛刀1.1.2 模型评估指标轮廓系数Calinski-Harabaz Index 1.1.3 案例:基于轮廓系数来选择n_clusters 1.2 参数init & random_state & n_init:初始质心怎么放好?1.3 重要参…

二:伙伴系统

内核空间内存分配 目录 内核空间内存分配 伙伴系统 首先从内核空间开始,讲解内存管理模式。 主要分为三种方式: 这篇文章我们集中注意于伙伴系统 伙伴系统 解决了外部碎片问题,针对大块内存分配设计 Linux中的内存管理的“页”大小为4…

java中使用Redis实现分布式锁

前言 目前很多大型的互联网公司后端都采用了分布式架构来支撑前端应用,其中服务拆分就是分布式的一种体现,既然服务拆分了,那么多个服务协调工作就会出现一些资源竞争的情况。比如多个服务对同一个表中的数据进行处理。容易出现类似多线程的…

linux中,和,|和||区别

1、& 表示任务在后台执行,比如运行一个jar文件,但是希望是后台运行可以执行 java -jar test.jar & 2、&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo step1‘ && echo ‘step2’ step1执行成功…

Java语法理论和面经杂疑篇《十二. JDK8 - 17新特性》

第18章_JDK8-17新特性(下) 6. 新语法结构 新的语法结构,为我们勾勒出了 Java 语法进化的一个趋势,将开发者从复杂、繁琐的低层次抽象中逐渐解放出来,以更高层次、更优雅的抽象,既降低代码量,又…

美颜SDK的优化方法:实现高效、快速、精准的美颜处理

时下,美颜相机、美颜软件等美颜处理应用也越来越受到用户的欢迎。美颜SDK是一种为移动应用提供美颜处理能力的开发工具包,可以帮助开发者快速实现美颜功能,提升应用的用户体验。但是,如何实现高效、快速、精准的美颜处理&#xff…

【spring-boot-seckill分布式秒杀系统 v1.0】java秒杀系统源码

spring-boot-seckill分布式秒杀系统是一个用SpringBoot开发的从0到1构建的分布式秒杀系统,项目案例基本成型,逐步完善中。 开发环境: JDK1.8、Maven、Mysql、IntelliJ IDEA、SpringBoot1.5.10、zookeeper3.4.6、kafka_2.11、redis-2.8.4、cur…

设计模式-创建型模式之抽象工厂模式(Abstract Factory)

4.抽象工厂模式(Abstract Factory)4.1. 模式动机在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时…

项目制作-3

今天是好日子呀解决了 文件的问题(未测试) 完成了更多的界面的设计 对基本的模块有了更多的完成度 又学习了easyx图形库的一些的应用 一起来看看吧 void menu() {initgraph(640, 800, 0);IMAGE img;loadimage(&img, "C:\\Users\\唐怡佳\\Desktop\\图1.jpg"…

sql实践-01

CREATE DATABASE 人员管控; SHOW DATABASES; use 人员管控; 创建表 CREATE TABLE 住宿人员 ( 身份证号 CHAR(18) NOT NULL PRIMARY KEY, 姓名 VARCHAR(10) NOT NULL, 性别 CHAR(1) NOT NULL, 出生日期 DATE, 户籍 VARCHAR(30), 文化程度 VARCHAR(10), 婚姻状况 CHAR(…