怎么從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)

這篇文章主要介紹了怎么從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數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)

解決辦法:先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  -- 否則默認賦值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 ;

感謝你能夠認真閱讀完這篇文章,希望小編分享的“怎么從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

文章名稱:怎么從MySQL數(shù)據(jù)庫中刪除Hive元數(shù)據(jù)
網(wǎng)址分享:http://bm7419.com/article36/pcdhsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(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)

外貿(mào)網(wǎng)站制作