這篇文章主要介紹了怎么從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù),具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為威縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè),威縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
Hive上所有元數(shù)據(jù)均保存在RDBMS中,所以刪除RDBMS中的Hive的元數(shù)據(jù),不會影響HDFS上的數(shù)據(jù)。目前針對MySQL數(shù)據(jù)庫進行分析。
Hive在MySQL數(shù)據(jù)庫中的相關(guān)元數(shù)據(jù)的關(guān)系圖:
解決辦法:先MySQL的庫中建個存儲過程P_TBL_DATA_DEL后,執(zhí)行該存儲過程就可以了。
存儲過程腳本:
DELIMITER $$
DROP PROCEDURE IF EXISTS P_TBL_DATA_DEL$$
CREATE PROCEDURE P_TBL_DATA_DEL(
i_tbl_id int -- 表ID
,outo_outcode integer -- 輸出代碼
,outo_outmsg varchar(500) -- 輸出信息
)
COMMENT '從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)'
label_pro:
BEGIN
/*======================================================================
* 交 易 名 稱 : 從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)
* 功 能 概 述 :
* 輸 入 表 :
* 輸 出 表 :
*
* 文 件 名 稱 : P_TBL_DATA_DEL.sql
* 設(shè) 計 : 設(shè)計時間:
* 開 發(fā) : wg 開發(fā)時間: 2018-07-31 15:06
*
* 測 試 代 碼 : call P_TBL_DATA_DEL(i_tbl_id,@o_outcode,@o_outmsg);
* select @o_outcode,@o_outmsg;
======================================================================*/
-- =========================== 聲明變量 ===========================
-- 自定義變量
DECLARE v_sd_id int ; -- 存儲配置ID SDS: 該表保存文件存儲的基本信息
DECLARE v_part_id int ; -- 分區(qū)ID PARTITIONS:該表存儲表分區(qū)的基本信息
DECLARE v_cd_id int ; -- 表字段信息ID COLUMNS_V2:該表存儲表對應(yīng)的字段信息
DECLARE v_serde_id int ; -- 序列化類配置ID SERDES:該表存儲序列化使用的類信息
DECLARE v_tbl_id int ; -- 表ID 用于接收輸入?yún)?shù)
-- =========================== 聲明異常 ===========================
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
-- 發(fā)生異常后的返回值
set o_outcode =-1;
set o_outmsg ='failure';
end ;
-- =========================== 變量初始化 ===========================
-- 判斷輸入的表ID是否為NULL,并進行賦值
IF i_tbl_id IS NOT NULL then
SET v_tbl_id = i_tbl_id ;
ELSE -- 否則默認(rèn)賦值0
SET v_tbl_id = 0 ;
END IF ;
-- =========================== 業(yè)務(wù)處理 ===========================
-- START TRANSACTION;
-- todo begin
-- 根據(jù)表ID獲取 存儲配置ID(SDS.SD_ID)
select
SD_ID
into
v_sd_id
from tbls
where TBL_ID = v_tbl_id
;
-- 根據(jù)表ID獲取 分區(qū)ID(PARTITIONS.part_id)
select
part_id
into
v_part_id
from partitions
where tbl_id = v_tbl_id
;
-- 根據(jù)存儲配置ID(SDS.SD_ID)獲取 表字段信息ID(COLUMNS_V2.cd_id)和序列化類配置ID(SERDES.serde_id)
select
cd_id
,serde_id
into
v_cd_id
,v_serde_id
from sds
where sd_id = v_sd_id
;
-- 刪除表屬性信息數(shù)據(jù)
delete from table_params where tbl_id = v_tbl_id;
-- 刪除表信息數(shù)據(jù)
delete from tbls where tbl_id = v_tbl_id;
-- 刪除文件存儲的基本信息數(shù)據(jù)
delete from sds where sd_id = v_sd_id;
-- 刪除存儲序列化屬性信息數(shù)據(jù)
delete from serde_params where serde_id = v_serde_id;
-- 刪除存儲序列化使用的類信息數(shù)據(jù)
delete from serdes where serde_id = v_serde_id;
-- 刪除表的字段信息數(shù)據(jù)
delete from columns_v2 where cd_id = v_cd_id;
-- 判斷是否v_part_id值是否為空,如果不為空,表示分區(qū)屬性表和分區(qū)字段值表有值,進行刪除.
if v_part_id is not null then
-- 刪除分區(qū)屬性信息數(shù)據(jù)
delete from partition_params where part_id = v_part_id;
-- 刪除分區(qū)字段值表數(shù)據(jù)
delete from partition_key_vals where part_id = v_part_id;
end if;
-- 刪除分區(qū)信息數(shù)據(jù)
delete from partitions where tbl_id = v_tbl_id;
-- 刪除分區(qū)字段信息數(shù)據(jù)
delete from partition_keys where tbl_id = v_tbl_id;
-- todo end
-- COMMIT;
-- 處理成功后的返回值
set o_outcode =0;
set o_outmsg = 'succe' ;
END
$$
DELIMITER ;
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
文章名稱:怎么從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)
網(wǎng)址分享:http://aaarwkj.com/article36/pcdhsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、做網(wǎng)站、品牌網(wǎng)站建設(shè)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)