二百二十七、Linux——通过shell脚本判断HDFS文件是否存在,如果存在则删除HDFS文件

一、目的

在用脚本去实现对HDFS中过期的ODS层原始数据进行删除后,发现还需要在脚本中对HDFS文件是否存在进行判断,否则如果HDFS文件不存在那么任务执行就会报错

报错原因是这一天的HDFS文件并不存在

原有脚本

#! /bin/bash
source /etc/profile

nowdate=`date --date='0 days ago' "+%Y%m%d"`
day_30_ago_date=`date -d "30 day ago " +%Y-%m-%d`

hdfs dfs -rm -r /user/hive/warehouse/hurys_dc_ods.db/ods_event/day=${day_30_ago_date}

二、判断Linux中文件是否存在的shell命令(未亲测过

if [ ! -f "$file" ];then

   echo "文件不存在"

fi

三、Hadoop相关的文件命令

hadoop fs -test 

-d 判断<path>是否是目录

-e 判断<path>是否存在

-f 判断<path>是否是个文件

-s 判断内容是否大于0bytes ,大于0为真

-z 判断内容是否等于0bytes,为0真

四、shell脚本判断HDFS文件是否存在,如果存在则删除

新脚本

#! /bin/bash
source /etc/profile

nowdate=`date --date='0 days ago' "+%Y%m%d"`
day_30_ago_date=`date -d "30 day ago " +%Y-%m-%d`

hadoop fs -test -e /user/hive/warehouse/hurys_dc_ods.db/ods_event/day=${day_30_ago_date}
if [ $? -ne 0 ]; then
    echo "文件不存在"
else 
    hdfs dfs -rm -r /user/hive/warehouse/hurys_dc_ods.db/ods_event/day=${day_30_ago_date}
fi

注意

1、今天是2024年3月5日,所以30天前的文件日期是2024-02-04

2、hadoop fs -test -e 用于判断HDFS目录/文件是否存在,下一步检测该命令的返回值,以确定其判断结果

(一)情况一:2024-02-04的文件不存在

脚本运行结果:文件不存在

(二)情况二:2024-02-04的文件存在

脚本运行结果:Deleted /user/hive/warehouse/hurys_dc_ods.db/ods_event/day=2024-02-04

day=2024-02-04的文件已删除

成功实现用shell脚本对HDFS文件是否存在进行判断,如果文件存在则删除的目的!

不过,最好在脚本里添加,对这一天ODS层表的分区进行删除,因为ODS层是外部分区表。删除HDFS文件,但ODS层的这一天分区依然存在,只是删除文件后这一天分区没有数据

最终脚本

#! /bin/bash
source /etc/profile

nowdate=`date --date='0 days ago' "+%Y%m%d"`
day_30_ago_date=`date -d "30 day ago " +%Y-%m-%d`

hadoop fs -test -e /user/hive/warehouse/hurys_dc_ods.db/ods_event/day=${day_30_ago_date}
if [ $? -ne 0 ]; then
    echo "文件不存在"
else 
    hdfs dfs -rm -r /user/hive/warehouse/hurys_dc_ods.db/ods_event/day=${day_30_ago_date}
fi

hive -e "
use hurys_dc_ods;

alter table hurys_dc_ods.ods_event drop partition (day='$day_30_ago_date')

"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722731.shtml

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

相关文章

python爬虫之Appium 的使用

Appium 是一个跨平台移动端自动化测试工具&#xff0c;可以非常便捷地为 iOS 和 Android 平台创建自动化测试用例。它可以模拟 App 内部的各种操作&#xff0c;如点击、滑动、文本输入等&#xff0c;只要我们手工操作的动作 Appium 都可以完成。在前面我们了解过 Selenium&…

使用 Docker 设置 PySpark Notebook

使用 Docker 设置 PySpark Notebook 第 1 步&#xff1a;拉取 Docker 镜像 首先拉取jupyter/all-spark-notebook包含 Spark 3.5.0 的镜像。 docker pull jupyter/all-spark-notebook:spark-3.5.0 第 2 步&#xff1a;设置您的工作区 在运行 Docker 映像之前&#xff0c;我们…

开源大数据集群部署(十四)Ranger集成Hbase

作者&#xff1a;櫰木 在hd1.dtstack.com主机上执行 在hmaster和back master上进行安装和执行 解压ranger-2.3.0-hbase-plugin [roothd1.dtstack.com ranger-plugin]# cd /root/bigdata [roothd1.dtstack.com ranger-plugin]# tar -zvxf ranger-2.3.0-hbase-plugin -C /opt配…

Unity编辑器功能Inspector快捷自动填充数据和可视化调试

我们有时候可能需要在面板增加一些引用&#xff0c;可能添加脚本后要手动拖动&#xff0c;这样如果有大量的脚本拖动也是不小的工作量 实例 例如&#xff1a;我的脚本需要添加一个Bone的列表&#xff0c;一个个拖动很麻烦。 实现脚本 我们可以用这样的脚本来实现。 public…

Nginx 域名证书 Http 和 Https 详细配置

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 项目开发完成后&#xff0c;将项目部署到服务器上时&#xff0c;为了保证安全性和加密通信&#xff0c;我们通常会配置 Nginx 作为反向代理服务器&#xff0c;并使用域名证书启用 HTTPS。下面将为你指…

小程序API能力集成指南——画布API汇总(一)

RJS Canvas Canvas Canvas 实例, 在 RJS 中可通过 getCanvasById 获取。 属性 number width&#xff1a;画布宽度 number height&#xff1a;画布高度 方法 如下。 1、getContext Canvas.getContext(string contextType) RenderingContext Canvas.getContext(string c…

链表(Linked List)算法的使用场景和使用例子详解

链表&#xff08;Linked List&#xff09;是一种常见的数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据部分和指向下一个节点的指针。链表算法在软件开发程序中有着广泛的应用场景。 链表算法基础知识&#xff1a; 链表算法基础知识主要包括链表的基本概…

利用 Redis 和 Lua 实现高效的限流功能

简介 在现代系统中&#xff0c;限流是一种重要的机制&#xff0c;用于控制服务端的流量并保护系统免受恶意攻击或请求泛滥的影响。本文将介绍如何利用 Redis 和 Lua 结合实现高效的限流功能。 一、什么是限流 限流指的是对系统中的请求进行控制和调节&#xff0c;确保系统在…

window安装Miniconda的步骤

安装Miniconda是一个简单直接的过程&#xff0c;适合希望在Windows上进行Python开发而又不想安装Anaconda那样庞大软件包的用户。以下是详细的步骤&#xff1a; 第1步&#xff1a;下载Miniconda安装程序 打开你的网络浏览器&#xff0c;访问Miniconda的官方下载页面&#xff…

Cluade3干货:超越GPT,模型特点分析+使用教程|2024年3月更新

就在刚刚&#xff0c;Claude 发布了最新的大模型 Claude3&#xff0c;并且一次性发布了三个模型&#xff0c;分别是 Claude 3 Haiku&#xff1a;&#xff08;日本俳句 &#xff09;Claude 3 Sonnet&#xff08;英文十四行诗&#xff09;Claude 3 Opus&#xff08;古典乐作品集…

docker-compose Install rustdesk

RustDesk RustDesk 是一款开源的远程支持和远程桌面工具,它旨在为用户提供便捷的远程协助和远程访问功能。 默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。务必在防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP。…

力扣爆刷第86天之hot100五连刷16-20

力扣爆刷第86天之hot100五连刷16-20 文章目录 力扣爆刷第86天之hot100五连刷16-20一、238. 除自身以外数组的乘积二、41. 缺失的第一个正数三、73. 矩阵置零四、54. 螺旋矩阵五、48. 旋转图像 一、238. 除自身以外数组的乘积 题目链接&#xff1a;https://leetcode.cn/problem…

streamlit初学-用streamlit实现云台控制界面

用streamlit实现云台控制界面 效果图PC上的效果手机上的效果 源码: 本文演示了,如何用streamlit做一个云台控制界面。功能包括:用户登录,事件的处理,图片的更新 版本信息: streamlit_authenticator: 下载链接streamlit : 1.31.1python: 3.11 修改点: streamlit_authenticato…

AndroidStudio安装Android模拟器AVD及遇到的问题解决

打开DeiviceManager 创建虚拟机 选个常规的1080*1920分辨率 这里就遇到一个报错&#xff1a; Android SDK is up to date. Running Android Emulator hypervisor driver installer [SC] ControlService 失败 1062: 服务尚未启动。 [SC] DeleteService 成功 [SC] 由于发生错误…

【大数据运维】大数据常见shell命令

文章目录 一、 Zookeeper常用命令1. zk服务命令2. zk客户端命令 二、HBASE常见运维命令1. 集群启动关闭2. 扩容增加regionserver3. 下线regionserver ing 一、 Zookeeper常用命令 例如&#xff1a;ZOOKEEPER_HOME&#xff1a;/opt/zk/zookeeper 1. zk服务命令 1. 启动ZK服务…

在线部署ubuntu20.04服务器,安装jdk、mysql、redis、nginx、minio

查看服务器版本为20.04 lsb_release -a服务器初始账号密码 sxd / 123456 首先,更改自身密码都输入123456 sudo passwd 创建最高权限root账号&#xff0c;密码为 123456 su root 更新源列表 sudo apt-get update 安装 openssh-server和vim&#xff0c;途中输入y sudo ap…

Effective C++ 学习笔记 条款10 令operator=返回一个reference to *this

关于赋值&#xff0c;有趣的是你可以把它们写成连锁形式&#xff1a; int x, y, z; x y z 15; // 赋值连锁形式同样有趣的是&#xff0c;赋值采用右结合律&#xff0c;所以上述连锁赋值被解析为&#xff1a; x (y (z 15));这里15先被赋值给z&#xff0c;然后其结果&…

Python爬虫:设置随机 User-Agent

Python爬虫&#xff1a;设置随机 User-Agent 在Python中编写爬虫时&#xff0c;为了模拟真实用户的行为并防止被服务器识别为爬虫&#xff0c;通常需要设置随机的User-Agent。你可以使用fake-useragent库来实现这一功能。首先&#xff0c;你需要安装fake-useragent库&#xff…

通过Apple Configurator 2导出iOS ipa包

通过Apple Configurator 2导出iOS ipa包 安装Apple Configurator 2 从Mac AppStore安装Apple Configurator 2 下载ipa 准备工作&#xff1a; 1、 电脑已经安装了Apple Configurator 2 2、 手机已经安装了目标软件 3、 Apple 账号已经下载过目标软件 打开后连接设备&#xf…

如何快速分析OB集群日志,敏捷诊断工具obdiag分析能力实践——《OceanBase诊断系列》之四

1. 前言 obdiag是OceanBase的敏捷诊断工具。1.2版本中&#xff0c;obdiag支持快速收集诊断信息&#xff0c;但仅有收集能力是不够的&#xff0c;还需要有分析能力。因此在obdiag的1.3.0版本中&#xff0c;我们加入了OB集群的日志分析功能。用户可以一键进行集群的OB日志的分析…