日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hive的元数据表结构详解(转自lxw1234)

發(fā)布時間:2024/3/12 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive的元数据表结构详解(转自lxw1234) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文介紹一下Hive元數(shù)據(jù)中重要的一些表結(jié)構(gòu)及用途,以Hive0.13為例。

文章最后面,會以一個示例來全面了解一下,Hive的元數(shù)據(jù)是怎么生成和存儲的。

13.1 存儲Hive版本的元數(shù)據(jù)表(VERSION)

該表比較簡單,但很重要。

VER_IDSCHEMA_VERSIONVERSION_COMMENT
ID主鍵Hive版本版本說明
10.13.0Set by MetaStore

如果該表出現(xiàn)問題,根本進(jìn)入不了Hive-Cli。

比如該表不存在,當(dāng)啟動Hive-Cli時候,就會報錯”Table ‘hive.version’ doesn’t exist”。

13.2 Hive數(shù)據(jù)庫相關(guān)的元數(shù)據(jù)表(DBS、DATABASE_PARAMS)

  • DBS

該表存儲Hive中所有數(shù)據(jù)庫的基本信息,字段如下:

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
DB_ID數(shù)據(jù)庫ID2
DESC數(shù)據(jù)庫描述測試庫
DB_LOCATION_URI數(shù)據(jù)庫HDFS路徑hdfs://namenode/user/hive/warehouse/lxw1234.db
NAME數(shù)據(jù)庫名lxw1234
OWNER_NAME數(shù)據(jù)庫所有者用戶名lxw1234
OWNER_TYPE所有者角色USER

?

  • DATABASE_PARAMS

該表存儲數(shù)據(jù)庫的相關(guān)參數(shù),在CREATE DATABASE時候用

WITH DBPROPERTIES (property_name=property_value, …)指定的參數(shù)。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
DB_ID數(shù)據(jù)庫ID2
PARAM_KEY參數(shù)名createdby
PARAM_VALUE參數(shù)值lxw1234

DBS和DATABASE_PARAMS這兩張表通過DB_ID字段關(guān)聯(lián)。

?

13.3 Hive表和視圖相關(guān)的元數(shù)據(jù)表

主要有TBLS、TABLE_PARAMS、TBL_PRIVS,這三張表通過TBL_ID關(guān)聯(lián)。

  • TBLS

該表中存儲Hive表、視圖、索引表的基本信息。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
TBL_ID表ID1
CREATE_TIME創(chuàng)建時間1436317071
DB_ID數(shù)據(jù)庫ID2,對應(yīng)DBS中的DB_ID
LAST_ACCESS_TIME上次訪問時間1436317071
OWNER所有者liuxiaowen
RETENTION保留字段0
SD_ID序列化配置信息86,對應(yīng)SDS表中的SD_ID
TBL_NAME表名lxw1234
TBL_TYPE表類型MANAGED_TABLE、EXTERNAL_TABLE、INDEX_TABLE、VIRTUAL_VIEW
VIEW_EXPANDED_TEXT視圖的詳細(xì)HQL語句select `lxw1234`.`pt`, `lxw1234`.`pcid` from `liuxiaowen`.`lxw1234`
VIEW_ORIGINAL_TEXT視圖的原始HQL語句select * from lxw1234

?

  • TABLE_PARAMS

該表存儲表/視圖的屬性信息。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
TBL_ID表ID1
PARAM_KEY屬性名totalSize、numRows、EXTERNAL
PARAM_VALUE屬性值970107336、21231028、TRUE

?

  • TBL_PRIVS

該表存儲表/視圖的授權(quán)信息

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
TBL_GRANT_ID授權(quán)ID1
CREATE_TIME授權(quán)時間1436320455
GRANT_OPTION?0
GRANTOR授權(quán)執(zhí)行用戶liuxiaowen
GRANTOR_TYPE授權(quán)者類型USER
PRINCIPAL_NAME被授權(quán)用戶username
PRINCIPAL_TYPE被授權(quán)用戶類型USER
TBL_PRIV權(quán)限Select、Alter
TBL_ID表ID22,對應(yīng)TBLS表中的TBL_ID

?

13.4 Hive文件存儲信息相關(guān)的元數(shù)據(jù)表

主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS

由于HDFS支持的文件格式很多,而建Hive表時候也可以指定各種文件格式,Hive在將HQL解析成MapReduce時候,需要知道去哪里,使用哪種格式去讀寫HDFS文件,而這些信息就保存在這幾張表中。

  • SDS

該表保存文件存儲的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否壓縮等。

TBLS表中的SD_ID與該表關(guān)聯(lián),可以獲取Hive表的存儲信息。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
SD_ID存儲信息ID1
CD_ID字段信息ID21,對應(yīng)CDS表
INPUT_FORMAT文件輸入格式org.apache.hadoop.mapred.TextInputFormat
IS_COMPRESSED是否壓縮0
IS_STOREDASSUBDIRECTORIES是否以子目錄存儲0
LOCATIONHDFS路徑hdfs://namenode/hivedata/warehouse/ut.db/t_lxw
NUM_BUCKETS分桶數(shù)量5
OUTPUT_FORMAT文件輸出格式org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
SERDE_ID序列化類ID3,對應(yīng)SERDES表

?

  • SD_PARAMS

該表存儲Hive存儲的屬性信息,在創(chuàng)建表時候使用

STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
SD_ID存儲配置ID1
PARAM_KEY存儲屬性名?
PARAM_VALUE存儲屬性值?
  • SERDES

該表存儲序列化使用的類信息

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
SERDE_ID序列化類配置ID1
NAME序列化類別名?
SLIB序列化類org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

?

  • SERDE_PARAMS

該表存儲序列化的一些屬性、格式信息,比如:行、列分隔符

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
SERDE_ID序列化類配置ID1
PARAM_KEY屬性名field.delim
PARAM_VALUE屬性值,

?

13.5 Hive表字段相關(guān)的元數(shù)據(jù)表

主要涉及COLUMNS_V2

  • COLUMNS_V2

該表存儲表對應(yīng)的字段信息。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
CD_ID字段信息ID1
COMMENT字段注釋?
COLUMN_NAME字段名pt
TYPE_NAME字段類型string
INTEGER_IDX字段順序2

?

13.6 Hive表分區(qū)相關(guān)的元數(shù)據(jù)表

主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

  • PARTITIONS

該表存儲表分區(qū)的基本信息。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
PART_ID分區(qū)ID1
CREATE_TIME分區(qū)創(chuàng)建時間?
LAST_ACCESS_TIME最后一次訪問時間?
PART_NAME分區(qū)名pt=2015-06-12
SD_ID分區(qū)存儲ID21
TBL_ID表ID2
  • PARTITION_KEYS

該表存儲分區(qū)的字段信息。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
TBL_ID表ID2
PKEY_COMMENT分區(qū)字段說明?
PKEY_NAME分區(qū)字段名pt
PKEY_TYPE分區(qū)字段類型string
INTEGER_IDX分區(qū)字段順序1

?

  • PARTITION_KEY_VALS

該表存儲分區(qū)字段值。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
PART_ID分區(qū)ID2
PART_KEY_VAL分區(qū)字段值2015-06-12
INTEGER_IDX分區(qū)字段值順序0

?

  • PARTITION_PARAMS

該表存儲分區(qū)的屬性信息。

元數(shù)據(jù)表字段說明示例數(shù)據(jù)
PART_ID分區(qū)ID2
PARAM_KEY分區(qū)屬性名numFiles、numRows
PARAM_VALUE分區(qū)屬性值15、502195

?

13.6 其他不常用的元數(shù)據(jù)表

  • DB_PRIVS

數(shù)據(jù)庫權(quán)限信息表。通過GRANT語句對數(shù)據(jù)庫授權(quán)后,將會在這里存儲。

  • IDXS

索引表,存儲Hive索引相關(guān)的元數(shù)據(jù)

  • INDEX_PARAMS

索引相關(guān)的屬性信息。

  • TAB_COL_STATS

表字段的統(tǒng)計信息。使用ANALYZE語句對表字段分析后記錄在這里。

  • TBL_COL_PRIVS

表字段的授權(quán)信息

  • PART_PRIVS

分區(qū)的授權(quán)信息

  • PART_COL_STATS

分區(qū)字段的統(tǒng)計信息。

  • PART_COL_PRIVS

分區(qū)字段的權(quán)限信息。

  • FUNCS

用戶注冊的函數(shù)信息

  • FUNC_RU

用戶注冊函數(shù)的資源信息

?

13.6 示例

建表語句:

  • CREATE TABLE lxw1234 (
  • cookieid STRING,
  • url STRING,
  • ua STRING,
  • ip STRING,
  • createtime STRING
  • )
  • COMMENT 'This is the page view table'
  • partitioned BY (day STRING,site STRING)
  • ROW FORMAT DELIMITED
  • FIELDS TERMINATED BY ','
  • stored AS ORC;
  • 建表執(zhí)行之后,元數(shù)據(jù)中以下表的數(shù)據(jù)會有所變化

    • TBLS

    生成了表lxw1234的基本信息

    SELECT * FROM TBLS WHERE TBL_NAME = ‘lxw1234’;

    元數(shù)據(jù)表字段數(shù)據(jù)
    TBL_ID41509
    CREATE_TIME1436324659
    DB_ID11
    LAST_ACCESS_TIME0
    OWNERliuxiaowen
    RETENTION0
    SD_ID91740
    TBL_NAMElxw1234
    TBL_TYPEMANAGED_TABLE
    VIEW_EXPANDED_TEXTNULL
    VIEW_ORIGINAL_TEXTNULL

    ?

    • TABLE_PARAMS

    select? *? from? TABLE_PARAMS? WHERE? TBL_ID=41509

    TBL_IDPARAM_KEYPARAM_VALUE
    41509commentThis is the page view table
    41509transient_lastDdlTime1436324659

    ?

    • SDS

    SELECT?*?FROM?SDS?WHERE?SD_ID =?91740

    元數(shù)據(jù)表字段數(shù)據(jù)
    SD_ID91740
    CD_ID41564
    INPUT_FORMATorg.apache.hadoop.hive.ql.io.orc.OrcInputFormat
    IS_COMPRESSED0
    IS_STOREDASSUBDIRECTORIES0
    LOCATIONhdfs://namenode/hivedata/warehouse/liuxiaowen.db/lxw1234
    NUM_BUCKETS-1
    OUTPUT_FORMATorg.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
    SERDE_ID91740
    • SERDES

    select?*?from?SERDES?WHERE?SERDE_ID =?91740

    元數(shù)據(jù)表字段數(shù)據(jù)
    SERDE_ID91740
    NAME?
    SLIBorg.apache.hadoop.hive.ql.io.orc.OrcSerde

    ?

    • SERDE_PARAMS

    select * from? SERDE_PARAMS? WHERE? SERDE_ID=91740

    ?

    SERDE_IDPARAM_KEYPARAM_VALUE
    91740field.delim,
    91740serialization.format,

    ?

    • COLUMNS_V2

    select * from COLUMNS_V2 WHERE CD_ID=41564?ORDER BY INTEGER_IDX

    CD_IDCOMMENTCOLUMN_NAMETYPE_NAMEINTEGER_IDX
    41564?cookieidstring0
    41564?urlstring1
    41564?uastring2
    41564?ipstring3
    41564?createtimestring4

    ?

    • PARTITION_KEYS

    select * from? PARTITION_KEYS? WHERE? TBL_ID=41509

    TBL_IDPKEY_COMMENTPKEY_NAMEPKEY_TYPEINTEGER_IDX
    41509?daystring0
    41509?sitestring1

    再插入數(shù)據(jù):

  • INSERT OVERWRITE TABLE lxw1234 PARTITION (day ='2015-07-08', site ='lxw1234.com')
  • SELECT
  • 'cookie1' AS cookieid,
  • 'http://lxw1234.com' AS url,
  • 'firefox' AS ua,
  • '127.0.0.1' AS ip,
  • '2015-07-08 11:00:01' AS createtime
  • FROM dual
  • limit 1;
  • ?
  • 插入數(shù)據(jù)執(zhí)行完之后,以下表的元數(shù)據(jù)發(fā)生變化:

    ?

    • PARTITIONS

    select * from? `PARTITIONS`? WHERE? TBL_ID=41509

    PART_IDCREATE_TIMELAST_ACCESS_TIMEPART_NAMESD_IDTBL_ID
    5447214363258120day=2015-07-08/site=lxw1234.com9174641509
    • SDS

    select *? from? SDS? WHERE? SD_ID=91746

    注意:這里的存儲和表的存儲是不同的,因為每個分區(qū)也會有一個SD

    元數(shù)據(jù)表字段數(shù)據(jù)
    SD_ID91746
    CD_ID41564
    INPUT_FORMATorg.apache.hadoop.hive.ql.io.orc.OrcInputFormat
    IS_COMPRESSED0
    IS_STOREDASSUBDIRECTORIES0
    LOCATIONhdfs://namenode/hivedata/warehouse/liuxiaowen.db/lxw1234/day=2015-07-08/site=lxw1234.com
    NUM_BUCKETS-1
    OUTPUT_FORMATorg.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
    SERDE_ID91746

    ?

    • PARTITION_KEY_VALS

    select? *? from? PARTITION_KEY_VALS? where? PART_ID=54472

    PART_IDPART_KEY_VALINTEGER_IDX
    544722015-07-080
    54472lxw1234.com1

    ?

    • PARTITION_PARAMS

    select * from PARTITION_PARAMS where PART_ID =?54472

    PART_IDPARAM_KEYPARAM_VALUE
    54472COLUMN_STATS_ACCURATEtrue
    54472numFiles1
    54472numRows1
    54472rawDataSize408
    54472totalSize703
    54472transient_lastDdlTime1436325813

    ?

    在分區(qū)的屬性里面,生成的該分區(qū)的統(tǒng)計信息(Statistics)。

    關(guān)于Hive的統(tǒng)計信息(Statistics),后面將會介紹。

    總結(jié)

    以上是生活随笔為你收集整理的Hive的元数据表结构详解(转自lxw1234)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。