溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hive中管理表、外部表、分區(qū)表的示例分析

發(fā)布時間:2021-12-10 09:34:37 來源:億速云 閱讀:266 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹Hive中管理表、外部表、分區(qū)表的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    
    
     

*管理表
     --我們目前所創(chuàng)建的表都是管理表,也叫內部表
     --Hive會控制管理表數(shù)據(jù)的生命周期,Hive默認會將表數(shù)據(jù)存儲在/user/hive/warehouse子目錄下
     --刪除一個管理表時,Hive也會刪除這個表中數(shù)據(jù)
     --管理表不方便和其他工具共享數(shù)據(jù)
               eg:我們有一份由Pig或其他工具創(chuàng)建并且主要由這一工具使用的數(shù)據(jù),同時我們還想使用Hive執(zhí)行查詢,可以創(chuàng)建一個外部表指向這份數(shù)據(jù),并不需要對其具有所有權

*外部表
     --文件位于分布式文件系統(tǒng)的/data/test
               eg:CREATE EXTERNAL TABLE IF NOT EXISTS app (
                    hour string,
                    name string,
                    pv string,
                    uv string) 
                    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
                    LOCATION '/data/test';

       對以上語句分析:
       1.關鍵字EXTERNAL告訴Hive這個表是外部表,LOCATION告訴Hive數(shù)據(jù)位于哪個路徑下
       2.因為是外部表,所以Hive并非認為其完全擁有這份數(shù)據(jù),刪除該表時并不會刪除這份數(shù)據(jù),只會刪除描述表的元數(shù)據(jù)信息

*管理表VS外部表
     --可以用 DESCRIBE EXTENDED tablename語句的輸出中查看到表是否是管理表或外部表
            --對于管理表,可看到如下信息
               ... tableType:MANAGED_TABLE)

            --對于外部表,可看到如下信息
                ... tableType:EXTERNAL_TABLE)

 注:如果語句省略 EXTERNAL 關鍵字而源表是外部表的話,那么生成的新表也是外部表
        如果語句省略 EXTERNAL 關鍵字而源表是管理表的話,那么生成的新表也是管理表
        如果語句有EXTERNAL關鍵字而源表是管理表的話,那么生成的新表是外部表

*分區(qū)管理表
     --管理表和外部表都可以加分區(qū)
              eg:CREATE TABLE IF NOT EXISTS tmp.table1(
                   userId  string  COMMENT '用戶ID',
                   name string COMMENT '用戶姓名',
                   createtime string COMMENT '創(chuàng)建時間'
                     )
                    PARTITIONED BY (country string,state string );

      --分區(qū)表改變了Hive對數(shù)據(jù)存儲的組織方式。如果我們在tmp庫下創(chuàng)建這個表,那么對于這個表只會有一個table1目錄與之對應:
                /user/hive/warehouse/tmp/table1
         但是,Hive在表目錄下將會建好可以反映分區(qū)結構的子目錄
                eg:/table1/country=CA/state=AB
                     /table1/country=CA/state=BC
                 ...
                     /table1/country=US/state=AL
                     /table1/country=US/state=AK
                 ...
          這些都是實際的目錄名稱,州目錄下將會包含有零個文件或者多個文件,這些文件中存放著那些州的用戶信息
          分區(qū)字段一旦創(chuàng)建好,表現(xiàn)得就和普通字段一樣,除非優(yōu)化查詢性能,否則不需要關心是否是分區(qū)字段
          如果要查某個國家的用戶,那僅僅需要掃描那個國家對應的目錄就可以

       --查看表中存在的所有分區(qū)
                 eg: hive> SHOW PARTITIONS table1;
                       country=CA/state=AB    
                       country=CA/state=BC
                   ...
                       country=US/state=AL
                       country=US/state=AK
                   ...
           查看某個特定分區(qū)
                 eg: hive> SHOW PARTITIONS table1 PARTITION(country='US');
                       country=US/state=AL
                       country=US/state=AK
                   ...

*外部分區(qū)表
        --創(chuàng)建外部分區(qū)表
                eg: CREATE EXTERNAL TABLE IF NOT EXISTS app (
                    hour string,
                    name string,
                    pv string,
                    uv string) 
                    PARTITIONED BY (timetype string,clct_day string ) 
                    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

        --增加指定分區(qū)的值
                eg: ALTER TABLE app ADD PARTITION (timetype=hour, clct_day='2018-07-26')
                      LOCATION '/data/test/table1/hour/'2018-07-26' ';

*自定義表的存儲格式
        --Hive的默認存儲格式是文本文件格式,也可以用STORED AS TEXTFILE 指定,同時在創(chuàng)建表的時候指定各種分隔符
        -- 使用TEXTFILE意味著每一行被認為是一個單獨的記錄
        --也可以保存為其他Hive支持的文件格式,包括SEQUENCEFILE和RCFILE,這兩種文件格式都是使用二進制編碼和壓縮來優(yōu)化磁盤空間使用以及I/O帶寬性能的
                eg: CREATE TABLE IF NOT EXISTS tmp.table1(
                      userId  string  COMMENT '用戶ID',
                      name string COMMENT '用戶姓名',
                      createtime string COMMENT '創(chuàng)建時間') 
                      ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
                      STORED AS TEXTFILE;

以上是“Hive中管理表、外部表、分區(qū)表的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI