Hive-定时清理无用的临时表

背景:

        有一个临时库,大家平时开发过程中比较常用,这个库的表的生命周期没有得到很好的管理,日积月累导致无用表增多,所以跟运维提了个方案,定期清理。提出了一个比较简单的方案。

解决方案:

show u the code

表规范如下

表名称:temp_xxxx(邮箱前缀)_xxxxx(自由发挥,不建议太长)_expyyyyMMdd(过期日期20241126)

清理规则如下

  1. 不符合上述规范的表直接清理或者rename
  2. 超过表的过期时间的清理或者rename

实现方案:

方案一:

这个版本的属于最常规的思路,如果清理的无用表较多的时候可能性能会稍微低些。

#!/bin/bash# Hive 配置
HIVE_DB="cusc_tmp_tmp_test_bd"
BEELINE_CMD="beeline"
BEELINE_URL="jdbc:hive2://<hive_server_host>:<hive_server_port>"
BEELINE_USER="<your_username>"
BEELINE_PASSWORD="<your_password>"# 获取当前日期
CURRENT_DATE=$(date +%Y%m%d)# 获取所有表名
TABLES=$($BEELINE_CMD -u "${BEELINE_URL}" -n "${BEELINE_USER}" -p "${BEELINE_PASSWORD}" --silent=true --showHeader=false -e "SHOW TABLES IN ${HIVE_DB};")# 正则表达式匹配表名格式
VALID_PATTERN="^temp_[^_]+_[^_]+_exp([0-9]{8})$"# 遍历所有表
for TABLE in $TABLES; doif [[ $TABLE =~ $VALID_PATTERN ]]; then# 提取过期日期EXP_DATE=${BASH_REMATCH[1]}# 检查是否过期if [[ $CURRENT_DATE -gt $EXP_DATE ]]; thenecho "Deleting expired table: ${TABLE}"$BEELINE_CMD -u "${BEELINE_URL}" -n "${BEELINE_USER}" -p "${BEELINE_PASSWORD}" --silent=true --showHeader=false -e "DROP TABLE IF EXISTS ${HIVE_DB}.${TABLE};"fielse# 删除不符合规范的表echo "Deleting invalid table: ${TABLE}"$BEELINE_CMD -u "${BEELINE_URL}" -n "${BEELINE_USER}" -p "${BEELINE_PASSWORD}" --silent=true --showHeader=false -e "DROP TABLE IF EXISTS ${HIVE_DB}.${TABLE};"fi
doneecho " cleanup completed."

ps:上面的方案我是用的是beeline是因为集群直接使用hive -e 出来的表名很不规整。条件允许的可以直接用hive -e 

对性能有要求的同学可能发现了,每次都要起一次beeline 客户端。效率堪忧。所以给出一个优化的方案。

方案二:

#!/bin/bash# Hive 配置
HIVE_DB="cusc_tmp_tmp_test_bd"
BEELINE_CMD="beeline"
BEELINE_URL="jdbc:hive2://<hive_server_host>:<hive_server_port>"
BEELINE_USER="<your_username>"
BEELINE_PASSWORD="<your_password>"# 获取当前日期
CURRENT_DATE=$(date +%Y%m%d)# 准备SQL脚本
SQL_SCRIPT="/tmp/cleanup_tables.sql"# 初始化SQL脚本
echo "USE ${HIVE_DB};" > "${SQL_SCRIPT}"# 获取所有表名
TABLES=$($BEELINE_CMD -u "${BEELINE_URL}" -n "${BEELINE_USER}" -p "${BEELINE_PASSWORD}" --silent=true --showHeader=false -e "SHOW TABLES IN ${HIVE_DB};")# 正则表达式匹配表名格式
VALID_PATTERN="^temp_[^_]+_[^_]+_exp([0-9]{8})$"# 遍历所有表
for TABLE in $TABLES; doif [[ $TABLE =~ $VALID_PATTERN ]]; then# 提取过期日期EXP_DATE=${BASH_REMATCH[1]}# 检查是否过期if [[ $CURRENT_DATE -gt $EXP_DATE ]]; thenecho "DROP TABLE IF EXISTS ${TABLE};" >> "${SQL_SCRIPT}"echo "Marked for deletion: ${TABLE}"fielse# 删除不符合规范的表echo "DROP TABLE IF EXISTS ${TABLE};" >> "${SQL_SCRIPT}"echo "Marked for deletion (invalid name): ${TABLE}"fi
done# 执行SQL脚本
$BEELINE_CMD -u "${BEELINE_URL}" -n "${BEELINE_USER}" -p "${BEELINE_PASSWORD}" --silent=true --showHeader=false -f "${SQL_SCRIPT}"# 清理临时SQL文件
rm -f "${SQL_SCRIPT}"echo "cleanup completed."
  1. 方案二把需要清理的表放到了一个文件里,然后直接一次性执行一个清理语句。减少了交互,提升了效率

总结:

方案比较简单粗暴,如果想要友好一些的,可以做rename处理,比如把表名加上trash,或者把每日待删除的表先发一个邮件给到开发的小伙伴,确认无误之后再最物理删除。具体情况根据团队的实际情况来定即可。

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

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

相关文章

【Python】绝地求生PUBG等FPS游戏辅助压枪软件脚本编写

【Python】绝地求生PUBG等FPS游戏辅助压枪软件脚本编写 更新以gitee为准&#xff1a; https://gitee.com/Mike_Zhou_Group/PUBG_Key/开源的是辅助压枪软件 不开源的是将之前的地图测距和压枪辅助整合在一起的整合包 关于地图测距&#xff1a; https://gitee.com/Mike_Zhou_G…

深度学习使用LSTM实现时间序列预测

大家好&#xff0c;LSTM是一种特殊的循环神经网络&#xff08;RNN&#xff09;架构&#xff0c;它被设计用来解决传统RNN在处理长序列数据时的梯度消失和梯度爆炸问题&#xff0c;特别是在时间序列预测、自然语言处理和语音识别等领域中表现出色。LSTM的核心在于其独特的门控机…

kafka进阶_2.存储消息

文章目录 一、存储消息介绍二、副本同步2.1、数据一致性2.2、HW在副本之间的传递 如果想了解kafka基础架构和生产者架构可以参考 kafka基础和 Kafka进阶_1.生产消息。 一、存储消息介绍 数据已经由生产者Producer发送给Kafka集群&#xff0c;当Kafka接收到数据后&#xff0c…

Python logging 使用笔记

使用 Python 的话用不着像 Java 那样是考虑用 Logback 还是 Log4J 的问题&#xff0c;因为它内置提供了完备功能的 logging 库。虽然 JDK 也有 java.util.logging(JUL), 它的特性其实也不差&#xff0c;如日志级别&#xff0c;输出格式&#xff0c;不同的输出目的地的选择&am…

《C++ 人工智能模型邂逅云平台:集成之路的策略与要点全解析》

在当今数字化浪潮汹涌澎湃的时代&#xff0c;人工智能无疑是引领技术变革的核心力量。而 C以其卓越的性能和高效的资源利用&#xff0c;成为开发人工智能模型的有力武器。与此同时&#xff0c;云平台所提供的强大计算能力、灵活的存储资源以及便捷的服务部署&#xff0c;为人工…

HTML飞舞的爱心

目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色…

Doris实战—构建日志存储与分析平台

构建日志存储与分析平台 日志是系统运行的详细记录,包含各种事件发生的主体、时间、位置、内容等关键信息。出于运维可观测、网络安全监控及业务分析等多重需求,企业通常需要将分散的日志采集起来,进行集中存储、查询和分析,以进一步从日志数据里挖掘出有价值的内容。 针…

leetcode 3206. 交替组 I 简单

给你一个整数数组 colors &#xff0c;它表示一个由红色和蓝色瓷砖组成的环&#xff0c;第 i 块瓷砖的颜色为 colors[i] &#xff1a; colors[i] 0 表示第 i 块瓷砖的颜色是 红色 。colors[i] 1 表示第 i 块瓷砖的颜色是 蓝色 。 环中连续 3 块瓷砖的颜色如果是 交替 颜色&…

mysql基本查询使用

/**DDL&#xff1a;操作数据库**/ -- 查询所有数据库 SHOW DATABASES;-- 创建数据库 CREATE DATABASE stu;-- 创建数据库的第二种方式&#xff1a;先判断数据库是否存在&#xff0c;存在就创建 CREATE DATABASE IFNOT EXISTS stu2;-- 删除数据库 DROP DATABASE stu;-- 删除数据…

拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流

在前端开发的世界里&#xff0c;我们总是在不断追寻更高效、更简洁的方式来构建令人惊艳的用户界面。而今天&#xff0c;我要向大家隆重介绍一款具有创新性的工具 ——NoCss.js&#xff0c;它将彻底颠覆你对传统前端开发的认知&#xff0c;引领我们进入一个全新的无 CSS 编程时…

基于QT实现贪吃蛇

0.项目展示 1.游戏大厅界面搭建 1.1 效果展示 1.2 背景添加 通过重写paintEvent事件来绘画界面 部分窗口大小&#xff0c;标题&#xff0c;图标的优化 1.3 开始按钮 使用CSS机制&#xff0c;添加样式&#xff0c;去掉边框 1.4 跳转游戏界面 1.5 问题&#xff1a;如何实现…

Navicat 预览变更sql

需求 用了Flyway&#xff08;数据库迁移工具&#xff09;后&#xff0c;需要记录变更sql&#xff0c;所以要知道变更sql。 查看方式 Navicat提供了预览变更sql功能&#xff0c;右击表---->设计表&#xff0c;比如修改字段后&#xff0c;点击SQL预览标签页&#xff0c; 顺…

实时数据开发 | 一文理解Flink窗口机制

窗口操作在流处理和批处理之间起到了桥梁的作用。 Flink引擎本质上是流式引擎&#xff0c;认为批处理是流处理的一个特例。因此&#xff0c;通过窗口将流数据划分为有限大小的集合&#xff0c;使得在这些有界的数据集上可以进行批处理风格的计算。 通过配置窗口的参数&#xf…

数据结构——用数组实现栈和队列

目录 用数组实现栈和队列 一、数组实现栈 1.stack类 2.测试 二、数组实现队列 1.Queue类 2.测试 查询——数组&#xff1a;数组在内存中是连续空间 增删改——链表&#xff1a;链表的增删改处理更方便一些 满足数据先进后出的特点的就是栈&#xff0c;先进先出就是队列…

【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测

简介&#xff1a;介绍 TM-16多线激光雷达 在8210A载板&#xff0c;TX2核心模块环境&#xff08;Ubuntu18.04&#xff09;下测试ROS驱动&#xff0c;打开使用RVIZ 查看点云数据&#xff0c;本文的前提条件是你的TX2里已经安装了ROS版本&#xff1a;Melodic。 大家好&#xff0c;…

预告|ROS中超好用固定翼仿真开源平台即将上线!

迅翼计划于年底推出基于ROS环境的固定翼上层仿真开发平台。该平台将采用PX4与Gazebo架构&#xff0c;充分融合ROS、PX4和Gazebo三大生态系统&#xff0c;致力于打造最简便、易用的固定翼上层算法仿真平台。 无论您是初学者&#xff0c;还是正在寻找适合的仿真平台进行算法验证&…

什么是 SQL 注入

目录 什么是 SQL 注入&#xff1f; SQL 注入的基本原理 如何发生 SQL 注入&#xff1f; SQL 注入的工作原理 SQL 注入的危害 常见的 SQL 注入攻击场景 什么是 SQL 注入&#xff1f; SQL 注入&#xff08;SQL Injection&#xff09;是一种常见的安全漏洞&#xff0c;攻击…

染色体微阵列(CMA)技术

1. 染色体微阵列&#xff08;CMA&#xff09;简介 染色体是细胞核中载有遗传信息的物质&#xff0c;正常人体细胞具有23对染色体&#xff0c;包括22对常染色体和1对性染色体。染色体携带众多基因&#xff0c;决定着细胞功能及个体的发育。染色体数目增多、减少或局部发生微缺失…

安装QT6.8(MSVC MinGW)+QT webengine+QT5.15.2

本篇主要针对只使用过QT5的qmake&#xff0c;没有用过MSVC&#xff0c;VS的老同学。 建议一部分一部分安装&#xff0c;全部勾选安装遇到问题会中断&#xff0c;前功尽弃。 我自己需要的是QT5&#xff0c;编出的软件用在公司设备上。 QT6&#xff1a;建议也安装学习&#xf…

【我在CSDN成长】我的五周年创作纪念日

感叹 五年的时光匆匆而过&#xff0c; 像一阵风&#xff0c;拂过岁月的湖面&#xff0c; 泛起层层涟漪&#xff0c;又悄然离去。 曾经的欢笑与泪水&#xff0c; 那些奋斗的日夜&#xff0c; 如同电影般在脑海中放映&#xff0c; 却已成为遥远的回忆。 五年&#xff0c;说长不长…