hive元數(shù)據(jù)

Hive元數(shù)據(jù)是什么吴汪?

元數(shù)據(jù),即解釋數(shù)據(jù)的數(shù)據(jù)蒸眠。在Hive架構(gòu)中漾橙,數(shù)據(jù)庫/表內(nèi)實際數(shù)據(jù)存放在HDFS之類的分布式存儲系統(tǒng)中,但這些數(shù)據(jù)并不帶有數(shù)據(jù)庫/表/字段之類的描述信息楞卡,這些信息均由單獨(dú)的關(guān)系型數(shù)據(jù)庫維護(hù)(一般用MySQL)霜运。

在安裝Hive時,需要在hive-site.xml文件中配置元數(shù)據(jù)相關(guān)信息臀晃。若不配置默認(rèn)使用Hive自帶的Derby數(shù)據(jù)庫觉渴,但這個數(shù)據(jù)庫是單session的,不便于使用徽惋。

hive-site.xml配置元數(shù)據(jù)庫可參見官網(wǎng)文檔:https://cwiki.apache.org/confluence/display/Hive/AdminManual+metastore+Administration

image

Hive元數(shù)據(jù)庫表描述

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

1.1.1 VERSION

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

VER_ID SCHEMA_VERSION VERSION_COMMENT
ID主鍵 Hive版本 版本說明
1 0.13.0 Set by MetaStore

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

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

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

1.2.1 DBS

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

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

1.2.2 DATABASE_PARAMS

該表存儲數(shù)據(jù)庫的相關(guān)參數(shù)蹈丸,在CREATE DATABASE(創(chuàng)建數(shù)據(jù)庫)時候用

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

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

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

提示:一般以DBS為主表逻杖,DATABASE_PARAMS為右表奋岁,因為不是所有的數(shù)據(jù)庫都有參數(shù)

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

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

1.3.1 TBLS

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

元數(shù)據(jù)表字段 說明 示例數(shù)據(jù)
TBL_ID 表ID 1
CREATE_TIME 創(chuàng)建時間(時間戳) 1436317071
DB_ID 數(shù)據(jù)庫ID 2女嘲,對應(yīng)DBS中的DB_ID
LAST_ACCESS_TIME 上次訪問時間 1436317071
OWNER 所有者 USER
RETENTION 保留字段 0
SD_ID 序列化配置信息 86畜份,對應(yīng)SDS表中的SD_ID
TBL_NAME 表名 lyg1234
TBL_TYPE 表類型 MANAGED_TABLE(內(nèi)部表)、EXTERNAL_TABLE(外部表)澡为、INDEX_TABLE(索引表)漂坏、VIRTUAL_VIEW(視圖)
VIEW_EXPANDED_TEXT 視圖的詳細(xì)HQL語句 select lyg1234.pt, lyg1234.pcid from liuxiaowen.lyg1234
VIEW_ORIGINAL_TEXT 視圖的原始HQL語句 select * from lyg1234

在Hive上有兩種類型的表,一種是Managed Table(內(nèi)部表)媒至,另一種是External Table(外部表)。它倆的主要區(qū)別在于:當(dāng)我們drop表時谷徙,Managed Table會同時刪去data和meta data拒啰,而External Table只會刪meta data。

1.3.2 TABLE_PARAMS

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

元數(shù)據(jù)表字段 說明 示例數(shù)據(jù)
TBL_ID 表ID 1
PARAM_KEY 屬性名 totalSize谋旦、numRows、EXTERNAL
PARAM_VALUE 屬性值 970107336屈尼、21231028册着、TRUE

1.3.3TBL_PRIVS

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

元數(shù)據(jù)表字段 說明 示例數(shù)據(jù)
TBL_GRANT_ID 授權(quán)ID 1
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 表ID 22脾歧,對應(yīng)TBLS表中的TBL_ID

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

主要涉及SDS(保存文件存儲的基本信息)甲捏、SD_PARAMS(存儲Hive存儲的屬性信息)、SERDES(存儲序列化使用的類信息)鞭执、SERDE_PARAMS(存儲序列化使用的類信息)

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

1.4.1 SDS

該表保存文件存儲的基本信息钦奋,如INPUT_FORMAT(文件輸入格式)座云、OUTPUT_FORMAT(輸出格式)是否壓縮等付材。

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

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

1.4.2 SD_PARAMS

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

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

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

1.4.3 SERDES

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

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

1.4.4 SERDE_PARAMS

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

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

SDS 表的CD_ID(字段信息ID)對應(yīng)CDS表CD_ID(字段信息ID)
SDS 表的SERDE_ID(序列化類ID)對應(yīng)SERDES 表SERDE_ID(序列化類配置ID )查找表的序列化信息
SDS 表的 SD_ID(存儲信息ID )對應(yīng) SD_PARAMS 表 SD_ID(存儲配置ID ) 查找表的屬性信息
SERDES 表的 SERDE_ID(序列化類配置ID )對應(yīng) SERDE_PARAMS表 SERDE_ID(序列化類配置ID ) 查找表的存儲序列化的一些屬性作喘、格式信息,比如:行理疙、列分隔符
SDS表的 CD_ID(字段信息ID)對應(yīng) COLUMNS_V2 表 CD_ID(字段信息ID ) 查找表的字段信息

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

主要涉及COLUMNS_V2

1.5.1 COLUMNS_V2

該表存儲表對應(yīng)的字段信息。 關(guān)于中文亂碼問題

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

COLUMNS_V2(存儲表對應(yīng)的字段信息):通過CD_ID和其他字段建立關(guān)系

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

主要涉及PARTITIONS(存儲表分區(qū)的基本信息)泞坦、PARTITION_KEYS(存儲分區(qū)的字段信息)窖贤、PARTITION_KEY_VALS(存儲分區(qū)字段值)、PARTITION_PARAMS(存儲分區(qū)的屬性信息)

1.6.1 PARTITIONS

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

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

1.6.2PARTITION_KEYS

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

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

表PARTITION_KEYS通過 TBL_ID(表ID )和TBLS (表的基本信息)TBL_ID(表ID )進(jìn)行關(guān)聯(lián)

1.6.3 PARTITION_KEY_VALS

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

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

1.6.4 PARTITION_PARAMS

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

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

表之間的關(guān)系:

PARTITIONS(存儲表分區(qū)的基本信息) 的PART_ID(分區(qū)ID)锣险、SD_ID(分區(qū)存儲ID )蹄皱、TBL_ID(表ID)和其他表相關(guān)聯(lián)

PARTITION_KEYS(該表存儲分區(qū)的字段信息) 的TBL_ID(表ID)和其他表相關(guān)聯(lián)

PARTITION_KEY_VALS(該表存儲分區(qū)字段值)通過 PART_ID(分區(qū)ID)和其他表相關(guān)聯(lián)

PARTITION_PARAMS(該表存儲分區(qū)的屬性信息)通過 PART_ID(分區(qū)ID)和其他表相關(guān)聯(lián)

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

1.7.1 DB_PRIVS

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

1.7.2 IDXS

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

1.7.3 INDEX_PARAMS

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

1.7.4 TAB_COL_STATS

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

1.7.5 TBL_COL_PRIVS

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

1.7.6 PART_PRIVS

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

1.7.7 PART_COL_STATS

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

1.7.8 PART_COL_PRIVS

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

1.7.9 FUNCS

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

1.7.10 FUNC_RU

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

2 示例

建表語句:

CREATE TABLE lyg1234 ( 
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

生成了表lyg1234的基本信息

SELECT * FROM TBLS WHERE TBL_NAME = ‘lyg1234’;

元數(shù)據(jù)表字段 數(shù)據(jù)
TBL_ID 41509
CREATE_TIME 1436324659
DB_ID 11
LAST_ACCESS_TIME 0
OWNER liuxiaowen
RETENTION 0
SD_ID 91740
TBL_NAME lyg1234
TBL_TYPE MANAGED_TABLE
VIEW_EXPANDED_TEXT NULL
VIEW_ORIGINAL_TEXT NULL
  • TABLE_PARAMS

select * from TABLE_PARAMS WHERE TBL_ID=41509

TBL_ID PARAM_KEY PARAM_VALUE
41509 comment This is the page view table
41509 transient_lastDdlTime 1436324659
  • SDS

SELECT * FROM SDS WHERE SD_ID = 91740

元數(shù)據(jù)表字段 數(shù)據(jù)
SD_ID 91740
CD_ID 41564
INPUT_FORMAT org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
IS_COMPRESSED 0
IS_STOREDASSUBDIRECTORIES 0
LOCATION hdfs://namenode/hivedata/warehouse/liuxiaowen.db/lyg1234
NUM_BUCKETS -1
OUTPUT_FORMAT org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
SERDE_ID 91740
  • SERDES

select * from SERDES WHERE SERDE_ID = 91740

元數(shù)據(jù)表字段 數(shù)據(jù)
SERDE_ID 91740
NAME
SLIB org.apache.hadoop.hive.ql.io.orc.OrcSerde
  • SERDE_PARAMS

select * from SERDE_PARAMS WHERE SERDE_ID=91740

SERDE_ID PARAM_KEY PARAM_VALUE
91740 field.delim ,
91740 serialization.format ,
  • COLUMNS_V2

select * from COLUMNS_V2 WHERE CD_ID=41564 ORDER BY INTEGER_IDX

CD_ID COMMENT COLUMN_NAME TYPE_NAME INTEGER_IDX
41564 cookieid string 0
41564 url string 1
41564 ua string 2
41564 ip string 3
41564 createtime string 4
  • PARTITION_KEYS

select * from PARTITION_KEYS WHERE TBL_ID=41509

TBL_ID PKEY_COMMENT PKEY_NAME PKEY_TYPE INTEGER_IDX
41509 day string 0
41509 site string 1

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

<pre class="md-fences md-end-block" lang="" contenteditable="false" cid="n791" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, "Liberation Mono", Courier, monospace; font-size: 0.9em; white-space: pre; text-align: left; break-inside: avoid; display: block; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(221, 221, 221); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit;">
INSERT OVERWRITE TABLE lyg1234 PARTITION (day = '2015-07-08', site = 'lyg1234.com') SELECT 'cookie1' AS cookieid,'http://lyg1234.com' AS url,'firefox' AS ua,'127.0.0.1' AS ip,'2015-07-08 11:00:01' AS createtime FROM dual limit 1; </pre>

插入數(shù)據(jù)執(zhí)行完之后,以下表的元數(shù)據(jù)發(fā)生變化:

  • PARTITIONS

select * from PARTITIONS WHERE TBL_ID=41509

PART_ID CREATE_TIME LAST_ACCESS_TIME PART_NAME SD_ID TBL_ID
54472 1436325812 0 day=2015-07-08/site=lyg1234.com 91746 41509
  • SDS

select * from SDS WHERE SD_ID=91746

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

元數(shù)據(jù)表字段 數(shù)據(jù)
SD_ID 91746
CD_ID 41564
INPUT_FORMAT org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
IS_COMPRESSED 0
IS_STOREDASSUBDIRECTORIES 0
LOCATION hdfs://namenode/hivedata/warehouse/liuxiaowen.db/lyg1234/day=2015-07-08/site=lyg1234.com
NUM_BUCKETS -1
OUTPUT_FORMAT org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
SERDE_ID 91746
  • PARTITION_KEY_VALS

select * from PARTITION_KEY_VALS where PART_ID=54472

PART_ID PART_KEY_VAL INTEGER_IDX
54472 2015-07-08 0
54472 lyg1234.com 1
  • PARTITION_PARAMS

select * from PARTITION_PARAMS where PART_ID = 54472

PART_ID PARAM_KEY PARAM_VALUE
54472 COLUMN_STATS_ACCURATE true
54472 numFiles 1
54472 numRows 1
54472 rawDataSize 408
54472 totalSize 703
54472 transient_lastDdlTime 1436325813

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

三 Hive元數(shù)據(jù)庫表匯總

表名 表描述 與其他表關(guān)聯(lián)字段
BUCKETING_COLS Hive表clustered by(分桶)字段信息(字段名缨恒,字段序號) 谴咸。存儲bucket字段信息,通過SD_ID與其他表關(guān)聯(lián) SD_ID(存儲信息ID):(SD_ID) REFERENCES SDS (SD_ID)
CDS 一個字段CD_ID骗露,與SDS表關(guān)聯(lián) CD_ID(字段信息ID)
COLUMNS_V2 存儲表對應(yīng)的字段信息岭佳,通過CD_ID與其他表關(guān)聯(lián) CD_ID(字段信息ID)
DATABASE_PARAMS 該表存儲數(shù)據(jù)庫的相關(guān)參數(shù),在CREATE DATABASE(創(chuàng)建數(shù)據(jù)庫)時候用 ,WITH DBPROPERTIES (property_name=property_value, …)指定的參數(shù)萧锉。 DB_ID(數(shù)據(jù)庫ID)
DBS hive的數(shù)據(jù)庫信息(描述珊随、數(shù)據(jù)庫的默認(rèn)目錄空間、名稱柿隙、用戶名叶洞、用戶類型) ,存儲hive的database信息(hdfs location信息禀崖,owner信息等) DB_ID(數(shù)據(jù)庫ID)
FUNCS 用戶注冊的函數(shù)信息 DB_ID(數(shù)據(jù)庫ID) FUNC_ID(函數(shù)ID)
FUNC_RU 用戶注冊函數(shù)的資源信息 FUNC_ID(函數(shù)ID)
GLOBAL_PRIVS 全局變量衩辟,與表無關(guān)
IDXS 索引表,存儲Hive索引相關(guān)的元數(shù)據(jù) SD_ID(存儲信息ID) INDEX_ID(索引ID)
INDEX_PARAMS 索引相關(guān)的屬性信息波附。 INDEX_ID(索引ID)
PARTITIONS 該表存儲表分區(qū)的基本信息 SD_ID(存儲信息ID艺晴、 PART_ID(分區(qū)ID) TBL_ID(表ID)
PARTITION_KEYS 該表存儲分區(qū)的字段信息,TBL_ID關(guān)聯(lián) TBL_ID(表ID)
PARTITION_KEY_VALS 該表存儲分區(qū)字段值 掸屡,通過PART_ID關(guān)聯(lián)。與PARTITION_KEYS共用同一個字段INTEGER_IDX來標(biāo)示不同的分區(qū)字段钥星。 PART_ID(分區(qū)ID)INTEGER_IDX(分區(qū)字段順序)
PARTITION_PARAMS 存儲某分區(qū)相關(guān)信息满着,包括文件數(shù),文件大小贯莺,記錄條數(shù)等缕探。通過PART_ID關(guān)聯(lián) PART_ID(分區(qū)ID)
PART_COL_PRIVS 分區(qū)的授權(quán)信息 PART_ID(分區(qū)ID)
PART_COL_STATS 分區(qū)字段的統(tǒng)計信息魂莫。 PART_ID(分區(qū)ID)
PART_PRIVS 分區(qū)的授權(quán)信息 PART_ID(分區(qū)ID)
ROLES 角色表,和GLOBAL_PRIVS配合爹耗,與表無關(guān) ROLE_ID(角色id)
SDS 該表保存文件存儲的基本信息,如INPUT_FORMAT(文件輸入格式)斗遏、OUTPUT_FORMAT(輸出格式)诵次、是否壓縮等枚碗。 SD_ID肮雨、CD_ID怨规、SERDE_ID
SD_PARAMS 該表存儲Hive存儲的屬性信息,在創(chuàng)建表時候使用STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定限番。 SD_ID
SEQUENCE_TABLE 元數(shù)據(jù)主鍵序列增長維護(hù)表 弥虐,存儲sqeuence相關(guān)信息霜瘪,與表無關(guān)
SERDES 存儲序列化反序列化使用的類 SERDE_ID(序列化類配置ID)
SERDE_PARAMS 該表存儲序列化的一些屬性惧磺、格式信息,比如:行磨隘、列分隔符番捂,通過SERDE_ID關(guān)聯(lián) SERDE_ID(序列化類配置ID)
SKEWED_COL_NAMES skew表對應(yīng)的傾斜字段设预,主鍵SD_ID、INTEGER_IDX作為聯(lián)合主鍵魄梯,該信息掛在了table上 SD_ID
SKEWED_COL_VALUE_LOC_MAP 偏移列值與本地文件的映射關(guān)系 SD_ID
SKEWED_STRING_LIST 偏移的字符串列表 STRING_LIST_ID
SKEWED_STRING_LIST_VALUES 偏移字符串列表值 STRING_LIST_ID
SKEWED_VALUES 偏移值 SD_ID_OID酿秸、INTEGER_IDX
SORT_COLS 排序字段,通過SD_ID關(guān)聯(lián) SD_ID
TABLE_PARAMS 該表存儲表/視圖的屬性信息缠局,是否外部表狭园,通過TBL_ID關(guān)聯(lián) TBL_ID
TAB_COL_STATS 表字段的統(tǒng)計信息唱矛。 TBL_ID
TBLS 該表中存儲Hive表绎谦、視圖窃肠、索引表的基本信息刷允,關(guān)聯(lián)字段DB_ID,SD_ID, TBL_ID树灶、DB_ID天通、SD_ID
TBL_COL_PRIVS 該表字段存儲表/視圖的授權(quán)信息 TBL_ID
TBL_PRIVS 該表存儲表/視圖的授權(quán)信息像寒,通過TBL_ID關(guān)聯(lián) TBL_ID
VERSION 版本

四 Hive中文亂碼多字符分隔符

問題還原

創(chuàng)建stu表诺祸,加載如下兩條數(shù)據(jù)序臂,分隔符為:$%#, 并查詢出來

Lyg$%#30$%#北京

Lyg$%#31$%#深圳

[root@hadoop001 hive-learn]# cat hw_stu.txt

Lyg$%#30$%#北京

Lyg$%#31$%#深圳

需要解決的問題

1)創(chuàng)建表時奥秆,元數(shù)據(jù)信息中的comment是中文,但存入MySQL會亂碼

2)插入中文數(shù)據(jù)侮叮,查詢會亂碼

3)文本字段分隔符是多字符囊榜,如何處理

4)使用Spark查詢時卸勺,默認(rèn)不支持多字符分隔符解析(ClassNotFoundException)

問題解決

修改元數(shù)據(jù)庫(MySQL)以下幾個字段編碼

默認(rèn)編碼為latin曙求,改為utf8

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8; -- 表級comment會存在該字段 
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8; 
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8; 
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

修改hive-site.xml中jdbc_url

加上utf8編碼:

jdbc:mysql://hadoop001:3306/hive?createDatabaseIfNotExist=true&useSSL=false&characterEncoding=UTF-8

建表

多字符分隔符特殊寫法請注意悟狱!

drop table if exists t_stu;
  create table t_stu(
 name string comment '姓名' , 
age string comment '年齡' , 
city string comment '城市' 
) comment '學(xué)生表' ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' 
WITH SERDEPROPERTIES ('field.delim'='$%#');
 -- 插入數(shù)據(jù) 
load data local inpath '/root/source/hive-learn/hw_stu.txt' into table t_stu;

測試

查看元數(shù)據(jù)

建表成功后,查看在元數(shù)據(jù)庫中浴麻,備注信息是否亂碼

image.jpeg
image.jpeg

Hive查看數(shù)據(jù)

image.jpeg

Spark查看數(shù)據(jù)

添加解析多字符分隔符的jar包

spark-shell --jars /root/lib/mysql-connector-java-5.1.47.jar,/root/app/hive/lib/hive-contrib-1.1.0-cdh5.16.2.jar

+----+---+----+
|name|age|city|
+----+---+----+
|Lyg| 30|北京|
|小李同學(xué)| 31|深圳|
+----+---+----+

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市或杠,隨后出現(xiàn)的幾起案子向抢,更是在濱河造成了極大的恐慌挟鸠,老刑警劉巖艘希,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件覆享,死亡現(xiàn)場離奇詭異,居然都是意外死亡撒顿,警方通過查閱死者的電腦和手機(jī)凤壁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門煤搜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徙鱼,“玉大人袱吆,你說我怎么就攤上這事绞绒∨詈猓” “怎么了狰晚?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵壁晒,是天一觀的道長秒咐。 經(jīng)常有香客問我携取,道長雷滋,這世上最難降的妖魔是什么文兢? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上爆侣,老公的妹妹穿的比我還像新娘幢妄。我一直安慰自己蕉鸳,他們只是感情好潮尝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布羹蚣。 她就那樣靜靜地躺著乱凿,像睡著了一般徒蟆。 火紅的嫁衣襯著肌膚如雪段审。 梳的紋絲不亂的頭發(fā)上戚哎,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天型凳,我揣著相機(jī)與錄音甘畅,去河邊找鬼。 笑死函似,一個胖子當(dāng)著我的面吹牛撇寞,可吹牛的內(nèi)容都是我干的蔑担。 我是一名探鬼主播啤握,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼排抬,長吁一口氣:“原來是場噩夢啊……” “哼蹲蒲!你這毒婦竟也來了悠鞍?” 一聲冷哼從身側(cè)響起咖祭,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浩嫌,沒想到半個月后补胚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溶其,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡束铭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年契沫,在試婚紗的時候發(fā)現(xiàn)自己被綠了懈万。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钞速。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡渴语,死狀恐怖驾凶,靈堂內(nèi)的尸體忽然破棺而出调违,到底是詐尸還是另有隱情技肩,我是刑警寧澤虚婿,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站剧浸,受9級特大地震影響矗钟,放射性物質(zhì)發(fā)生泄漏吨艇。R本人自食惡果不足惜秸应,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一桑谍、第九天 我趴在偏房一處隱蔽的房頂上張望锣披。 院中可真熱鬧雹仿,春花似錦胧辽、人聲如沸邑商。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暇仲。三九已至熔吗,卻和暖如春桅狠,著一層夾襖步出監(jiān)牢的瞬間中跌,已是汗流浹背漩符。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工凸克, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萎战,地道東北人蚂维。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓蔚约,卻偏偏與公主長得像涂籽,于是被迫代替她去往敵國和親评雌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容