通过MySQL删除Hive元数据信息

这篇具有很好参考价值的文章主要介绍了通过MySQL删除Hive元数据信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

解决方法:

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

通过MySQL删除Hive元数据信息,数据库,大数据知识,hive

 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中表是否还存在,即是否删除成功。文章来源地址https://www.toymoban.com/news/detail-625333.html

到了这里,关于通过MySQL删除Hive元数据信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL删除数据库

    目录 一、drop命令删除数据库 二、使用mysqladmin删除数据库 三、使用PHP脚本删除数据库 使用普通用户登陆 MySQL 服务器,可能需要特定的权限来创建或者删除 MySQL 数据库,所以这边使用 root 用户登录,root 用户拥有最高权限。 在删除数据库过程中,务必要十分谨慎,因为在执

    2024年02月08日
    浏览(60)
  • MySQL数据库——6、删除数据表

    删除一个数据表,使用 SQL 命令 DROP TABLE 。 DROP TABLE 命令允许从数据库中永久删除指定的数据表及其所有数据。 DROP TABLE table_name;   table_name 是要删除的数据表的名称。 例如,要删除名为 users 的数据表,可以执行以下 SQL 命令: DROP TABLE users;   执行此命令后,名为 users 的数据

    2024年04月11日
    浏览(63)
  • 大数据平台环境搭建---- Hive&MySql数据库组件配置

    前置环境 Hadoop集群必须部署完成,如果还没有搭建请先前往Hadoop全分布搭建笔记 程序版本 hive 1.1.0 mysql 5.7.25 mysql-connector-java-5.1.39-bin.jar 资源下载 官网下载: mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar :https://downloads.mysql.com/archives/community/  链接:https://pan.xunlei.com/s/VNoQg4wdxda5by6L8Lvug9e

    2024年01月25日
    浏览(66)
  • django框架——实现MySQL数据库数据的删除

    在html中的删除按钮中绑定js文件中的事件,带上参数,点击即触发(删除按钮不能是a链接,不然报错) js文件中实现该功能,发起ajax请求到后端视图中对数据库进行操作 路由导入 在视图里面实现删除功能

    2024年02月13日
    浏览(63)
  • 使用sqoop将hive数据库导入至mysql

    前言:本文由实现此博客过程中遇到的问题及解决办法整理而成。博客:淘宝双11数据分析与预测课程案例-步骤三:将数据从Hive导入到MySQL_厦大数据库实验室 数据 数据放在 /usr/local/data/comment.csv 数据来源于:Amazon Reviews: Unlocked Mobile Phones | Kaggle 大数据开发环境 软件 版本 had

    2024年02月05日
    浏览(45)
  • MySQL数据库索引的种类、创建、删除

    目录 一:MySQL 索引 1、MySQL 索引介绍 2、 索引的作用  3、索引的副作用 4、 创建索引的原则依据  二、索引的分类和创建 1、 普通索引 (1) 直接创建索引 (2) 修改表方式创建 (3) 创建表的时候指定索引 2、 唯一索引 (1) 直接创建唯一索引 (2) 修改表方式创建

    2024年02月09日
    浏览(222)
  • Android——Sqlite数据库——实现联系人信息的添加、查询、修改以及删除功能

        掌握常用布局和基本控件的使用方法     掌握界面图像显示的使用方法     掌握SQLite数据库的创建和基本操作方法 通过线性布局和相对布局来搭建Activity界面,在MainActivity中编写逻辑代码,运行程序,输入两条联系人信息分别点击“添加”“查询”“修改”“

    2024年02月07日
    浏览(48)
  • GreatSQL通过错误日志信息判断数据库实例是如何关闭的

    在一次客户的数据库实例连接不上了,需要我们排查一下原因,通过查看数据库实例进程已经不存在了,在错误日志中没有发现其他报错信息,发现有 shutdown 的字样出现,怀疑是某个用户手动关闭了实例。我们通过以下测试,发现是由于用户关闭了主机所导致的。 本次测试

    2024年02月17日
    浏览(59)
  • 大数据之使用Spark增量抽取MySQL的数据到Hive数据库(1)

    前言 题目: 一、读题分析 二、处理过程 1.采用SparkSQL使用max函数找到最大的日期然后转换成时间类型在变成字符串 2.这里提供除了SQL方法外的另一种过滤不满足条件的方法 三、重难点分析 总结  本题来源于全国职业技能大赛之大数据技术赛项 电商 赛题-离线数据处理-抽取

    2024年02月08日
    浏览(52)
  • 大数据之使用Spark全量抽取MySQL的数据到Hive数据库

    前言 一、读题分析 二、使用步骤 1.导入配置文件到pom.xml 2.代码部分 三、重难点分析 总结 本题来源于全国职业技能大赛之大数据技术赛项赛题-离线数据处理-数据抽取(其他暂不透露) 题目:编写Scala代码,使用Spark将MySQL的shtd_industry库中表EnvironmentData,ChangeRecord,BaseMach

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包