Hive元數據管理

衆所周知,hive表中的數據是HDFS上的文件,但是hive怎麼知道這些文件的內容都對應哪一個字段,對應哪一個分區呢?
就是hive的元數據管理着這一切。一般在hive-site.xml中的元數據庫配置成MySQL,替換Derby。html

<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql:///metastore?createDatabaseIfNotExists=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

下面咱們進MySQL看看元數據的表具體有哪些。java

1.VERSION

這個存hive版本,有且僅有一條數據mysql

clipboard.png

若是多了,會報錯sql

Caused by: MetaException(message:Metastore contains multiple versions (2)

2.庫相關表

clipboard.png

DBS是數據庫主表,字段名顧名思義,樣例數據以下數據庫

clipboard.png

DATABASE_PARAMS是建立數據庫 WITH DBPROPERTIES (property_name=property_value, …)指定的參數函數

clipboard.png

FUNCS是函數表spa

clipboard.png

FUNC_RU是函數在哪一個jar包中code

clipboard.png

3.表相關表

clipboard.png

PS:調整裏半天位置來截個圖,感受像站隊合影同樣……哈哈
TBLS是表的主表,存放hive全部表的主要信息,其中TBL_TYPE是表類型,MANAGED_TABLE表示內部表,EXTERNAL_TABLE表示外部表xml

clipboard.png

TABLE_PARAMS是表參數,相似DATABASE_PARAMS
TBL_PRIVS,TBL_COL_PRIVS分別是表權限與列權限htm

PARTITION_KEYS是分區信息表,INTEGER_IDX是分區字段序號

clipboard.png

PARTITIONS是具體的分區記錄,當某表添加新的分區時,會增長一條記錄

clipboard.png

4.存儲相關表

clipboard.png

SDS是存儲主表,包含數據文件的輸入輸出格式,所在HDFS路徑,是否壓縮等

clipboard.png

COLUMNS_V2是列的信息,INTEGER_IDX是列的下標,對應文件的內容順序

clipboard.png

SD_PARAMS是在建立表時候使用STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定
SERDES是序列化使用類的表

clipboard.png

SERDE_PARAMS存儲列分隔符,行分隔符等

clipboard.png

在序列化參數表中記錄列的分隔符,意味着Hive的存儲是對每一個字段各自序列化的。

參考博客:
https://www.jianshu.com/p/ccf...
https://www.cnblogs.com/11301...

相關文章
相關標籤/搜索