中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Hive中管理表、外部表、分區表的示例分析

發布時間:2021-12-10 09:34:37 來源:億速云 閱讀:314 作者:小新 欄目:大數據

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

    
    
     

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

*外部表
     --文件位于分布式文件系統的/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數據位于哪個路徑下
       2.因為是外部表,所以Hive并非認為其完全擁有這份數據,刪除該表時并不會刪除這份數據,只會刪除描述表的元數據信息

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

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

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

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

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

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

*外部分區表
        --創建外部分區表
                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';

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

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

向AI問一下細節

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

AI

宁波市| 名山县| 永州市| 北安市| 岳阳市| 扎鲁特旗| 新沂市| 伊宁县| 美姑县| 五河县| 西吉县| 凌海市| 中牟县| 华池县| 泰来县| 开江县| 广南县| 紫阳县| 蛟河市| 太和县| 鲁山县| 西昌市| 巴塘县| 石渠县| 汝城县| 开封县| 固安县| 玉龙| 庆阳市| 大关县| 安岳县| 黄石市| 和林格尔县| 祥云县| 监利县| 巴楚县| 长垣县| 镇巴县| 社旗县| 申扎县| 昭苏县|