通过MySQL删除Hive元数据信息

之前遇到过一个问题,在进行Hive的元数据采集时,因为Hive表的文件已经被删除了,当时是无法删除表,导致元数据采集也发生了问题,所以希望通过删除Hive表的元数据解决上述问题。

之前安装时,经过特定的配置后,Hive上所有元数据均保存在Mysql中,所以可以从Mysql上删除表相关信息即可删除hive表,而且不会影响Hdfs上数据。

解决方法:

1、Hive在Mysql上的相关元数据表关系图:

 2、先在Mysql中建存储过程:

DELIMITER $$
ROLLBACK;
DROP PROCEDURE IF EXISTS P_TBL_DATA_DEL$$
CREATE PROCEDURE P_TBL_DATA_DEL(i_tbl_name varchar(100) -- 表id
,out o_outcode integer  -- 输出代码
,out o_outmsg  varchar(500) --输出信息
COMMENT'从mysql数据库中制除Hive的元数据信息'
label_prot:
BEGIN/*====================================================================** 存储名称: 从MySQL数据库中删除Hive元数据                            ** 文件名称: P_TBL_DATA_DEL.sql                                       ** 调用示例:call P_TBL_DATA_DEL(tablename,@o_outcode,@o_outmsg);     **====================================================================*/
-- 自定义变量
DECLARE v_sd_id    int;
DECLARE v_part_id  int;
DECLARE v_cd_id    int;
DECLARE v_serde_id int;
DECLARE v_tbl_id   int;
DECLARE v_tbl_name varchar(100) ;
-- 异常声明
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET o_outcode = -1;
SET o_outmsg  ='failuro';
END;
-- 初始化变量
IF
i_tbl_name IS NOT NULL THEN
SET v_tbl_name = i_tbl_name;
ELSE  -- 否则默认赋值0
SET v_tbl_name = 0;
END IF;
-- START TRANSACTION
-- todo begin
-- 根据表名获取表ID
select TBL_ID into v_tbl_id from tbls where TBL_NAME = v_tbl_name;
-- 根据表ID获取存储配置ID(SDS.SD_ID)
select SD_ID into v_sd_id from tbls where TBL_ID = v_tbl_id;
-- 根据表ID获取分区ID(PARTITIONS.part_id)
select part_id into v_part_id from partitions where tbl_id = v_tbl_id:
-- 根据存储配置ID获取表字段信息和序列化类配置ID
select cd_id,serde_id into v_cd_id,v_serde_id from sds where sd_id = v_sd_id;
-- 册除表属性信息数据
delete from table_params where tbl_id = v_tbl id;
-- 删除表信息数据
delete from tbls where tbl_id = v_tbl_id;
-- 删除文件存储的基本信息数据
delete from sds where sd_id = v_sd_id;
-- 删除序列化属性信息数据
delete from serde_params wheras serde_id = v_serde_id;
-- 删除存储序列化使用的类信息数据
delete from serdes where serde_id = v_sd_id;
-- 删除表的字段信息
delete from colum ms_v2 where cd_id = v_cd_id;
-- 判断是否v_part_id值是否为空,如果不为空,表示分区属性和表分区字段值表有值,进行删除
IF v_part_id IS NOT NULL THAN
-- 删除分区属性信息
delete from partition_params where part_id = v_part_id;
-- 删除分区字段值表数据
delete from partition_key_vals where par_id = v_part_id;
END IF;
-- 删除分区信息数据
delete from partitions where tbl_id = v_tbl_id;
-- 删除分区字段信思
delete from partition_keys where tbl_id = v_tbl_id;-- 处理成功后的返回值
SET o_outcode = 0;
SET o_outmsg='succe';
END
$$
DELIMITER;

2、备份Hive的元数据库;

3、删除备份表的外键信息;

4、执行存储过程,即:

call P_TBL_DATA_DEL (‘需要删除的表英文名’,@o_outcode,@o_outmsg);

5、将删除的外键添加回去;

6、验证表hive中表是否还存在,即是否删除成功。

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

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

相关文章

单片机实现动态内存管理

1.简介 多数传统的单片机并没有动态内存管理功能。单片机通常具有有限的存储资源,包括固定大小的静态RAM(SRAM)用于数据存储和寄存器用于特定功能。这些资源在编译时被分配并且在程序的整个生命周期中保持不变。 2.动态内存管理好处 灵活性和…

SpringBoot使用@Autowired将实现类注入到List或者Map集合中

前言 最近看到RuoYi-Vue-Plus翻译功能 Translation的翻译模块配置类TranslationConfig,其中有一个注入TranslationInterface翻译接口实现类的写法让我感到很新颖,但这种写法在Spring 3.0版本以后就已经支持注入List和Map,平时都没有注意到这…

Jenkins持续集成-快速上手

Jenkins持续集成-快速上手 注:Jenkins一般不单独使用,而是需要依赖代码仓库,构建工具等。 搭配组合:GitGitee(GitHub、GitLab)MavenJenkins 前置准备 常见安装方式: war包Docker容器实例&…

WEB集群——http、tomcat

1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8,配置服务启动脚本,部署jpress应用。 1. 简述静态网页和动态网页的区别。 1)、静态网页 (1)、什么是静态网页 请求响应信息&…

Java 工具类(列表)

去重 对列表进行保留顺序的去重 List<Integer> list List.of(1, 2, 4, 3, 1); LinkedHashSet<Integer> set new LinkedHashSet<>(list); ArrayList<Integer> integers new ArrayList<>(set); // 1, 2, 4, 3删除 按照单逻辑进行删除 List&…

基于fpga的电子时钟

文章目录 前言实验手册一、实验目的二、实验原理1&#xff0e;理论原理2&#xff0e;硬件原理 三、系统架构设计四、模块说明1&#xff0e;模块端口信号列表按键消抖模块&#xff08;key&#xff09;计数器模块&#xff08;counter&#xff09;蜂鸣器乐谱模块(music)蜂鸣器发声…

leetcode做题笔记57

给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表。 在列表中插入一个新的区间&#xff0c;你需要确保列表中的区间仍然有序且不重叠&#xff08;如果有必要的话&#xff0c;可以合并区间&#xff09;。 思路一&#xff1a;模拟题意 int pushbackInterval(int…

GD32F103VE侵入事件

GD32F103VE的TAMPER引脚(PC13)&#xff0c;当PC13输入低电平时&#xff0c;会产生一个侵入检测事件。它会将所有“数据备份寄存器”内容清除。 这个功能有什么用&#xff1f; 一是防止被人开壳&#xff0c;抄袭。二是自毁功能。 直奔主题&#xff0c;多一句就是浪费时间。测试…

面试之快速学习c++11- 列表初始化和 lambda匿名函数的定义

学习地址&#xff1a; http://c.biancheng.net/view/3730.html 8. C11列表初始化&#xff08;统一了初始化方式&#xff09; 我们知道&#xff0c;在 C98/03 中的对象初始化方法有很多种&#xff0c;请看下面的代码&#xff1a; //初始化列表 int i_arr[3] { 1, 2, 3 }; /…

flutter开发实战-flutter_spinkit实现多种风格进度指示器

flutter开发实战-flutter_spinkit实现多种风格进度指示器 最近开发过程中flutter_spinkit&#xff0c;这个拥有多种种风格加载指示器 一、flutter_spinkit 引入flutter_spinkit # 多种风格的模糊进度指示器flutter_spinkit: ^5.1.0效果示例 const spinkit SpinKitRotatingC…

如何找到死锁的线程?_java都学什么

在Java中&#xff0c;死锁是指两个或多个线程被无限地阻塞&#xff0c;等待彼此持有的资源&#xff0c;从而导致程序无法继续执行的情况。死锁通常是由于线程之间循环等待资源而产生的。要找到死锁的线程&#xff0c;可以采用以下方法&#xff1a; 1.线程转储(Thread Dump) 通过…

6.6 实现卷积神经网络LeNet训练并预测手写体数字

模型架构 代码实现 import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(nn.Conv2d(1,6,kernel_size5,padding2),nn.Sigmoid(),#padding2补偿5x5卷积核导致的特征减少。nn.AvgPool2d(kernel_size2,stride2),nn.Conv2d(6,16,kernel_size5),nn.S…

Node.js-npm包管理工具的介绍

一、概念 包&#xff0c;代表一组特定功能的源码集合。 包管理工具&#xff0c;管理包的应用软件&#xff0c;可以下载安装、更新、删除包等操作&#xff0c;在项目开发中大大提高开发效率。 npm全称&#xff1a;Node Package Manager 二、npm使用 如果安装了 node&#xff0c;…

OpenStreetMap数据转3D场景【Python + PostgreSQL】

很长一段时间以来&#xff0c;我对 GIS 和渲染感兴趣&#xff0c;在分别尝试这两者之后&#xff0c;我决定最终尝试以 3D 方式渲染 OpenStreetMap 中的地理数据&#xff0c;重点关注不超过城市的小规模。 在本文中&#xff0c;我将介绍从建筑形状生成三角形网格、以适合 Blend…

iperf3-性能测试

iperf3-性能测试 安装1.apt安装2.源码安装 使用方法iperf原理测试参考文档性能测试客户端服务端 官方文档&#xff1a;https://iperf.fr/iperf-doc.php 安装 1.apt安装 sudo apt-get install iperf32.源码安装 # 按照官方说明安装 ./configure make sudo make install执行编…

node中使用express+mongodb实现分页查询

文章目录 引言一、分页案例二、查询方法扩展介绍1. find()2. limit()3. skip()4. populate() 总结 引言 在Web应用程序开发中&#xff0c;分页查询是必不可少的功能之一。Node.js提供了许多优秀的工具和框架来实现分页查询&#xff0c;其中最流行的框架之一就是Express。同时&…

8.2一日总结

1.记录更新&#xff1a; untracked&#xff1a; 未追踪&#xff08;新增的文件&#xff09; unmodefied&#xff1a; 未修改 modefied&#xff1a; 已修改 staged&#xff1a; 已暂存 2、添加指定文件到暂存区&#xff1a; git add 文件名 gi…

docker 怎么搭建

Docker是一种容器化平台&#xff0c;可以快速构建、部署和运行应用程序。以下是Docker的搭建流程&#xff1a; 1. 安装Docker 在官方网站上下载并安装Docker&#xff0c;根据官方指引进行安装。 2. 配置Docker环境&#xff1a; 配置Docker环…

GATK ApplyBQSRSpark 过程中因No space left on device终止

Error&#xff1a; GATK ApplyBQSRSpark 过程中因No space left on device终止 执行命令&#xff1a; nohup time ./gatk --java-options "-Xmx128G" ApplyBQSRSpark --spark-master local[20] -R ../../alignment/hg38/hg38.fa -I ../../alignment/bam/P368T.s…

微信小程序nodejs+vue+uniapp高校食堂线上预约点餐系统

本次设计任务是要设计一个食堂线上预约点餐系统&#xff0c;通过这个系统能够满足管理员及学生的食堂线上预约点餐分享功能。系统的主要包括首页、个人中心、学生管理、菜品分类管理、菜品管理、关于我们管理、意见反馈、系统管理、订单管理等功能。 开发语言 node.js 框架&am…